|
|
- KfBossTreasureModel = KfBossTreasureModel or BaseClass(BaseVo, true)
- local KfBossTreasureModel = KfBossTreasureModel
-
- function KfBossTreasureModel:__init()
- KfBossTreasureModel.Instance = self
- self:Reset()
- end
-
- function KfBossTreasureModel:Reset()
- self.basic_data = {}
- self.task_process_info = {}
- self.reward_info = {}--后端发来的奖励配置
- -------------------------
- self.red_act = {}
- self.red_lv_reward = {}
- end
-
- function KfBossTreasureModel:getInstance()
- if KfBossTreasureModel.Instance == nil then
- KfBossTreasureModel.Instance = KfBossTreasureModel.New()
- end
- return KfBossTreasureModel.Instance
- end
-
- --活动信息
- function KfBossTreasureModel:GetBasicData( sub_type )
- return self.basic_data[sub_type]
- end
- function KfBossTreasureModel:SetBasicData( value )
- self.basic_data[value.sub_type] = value
- end
- function KfBossTreasureModel:RefreshBasicPayStatus( sub_type,state )
- local basic_data = self:GetBasicData( sub_type )
- if state and basic_data then
- basic_data.is_pay = state
- end
- end
-
- --任务完成进度信息
- function KfBossTreasureModel:GetTaskProcessInfo( sub_type )
- return self.task_process_info[sub_type]
- end
- function KfBossTreasureModel:SetTaskProcessInfo( value )
- self.task_process_info[value.sub_type] = {}
- for k,v in pairs(value.task_list) do
- self.task_process_info[value.sub_type][v.task_id] = v
- -------------------------
- local temp_conf = self:GetTaskConfByType( v.task_id )
- if temp_conf and temp_conf.limit_times > v.times then
- v.status = KfBossTreasureConst.RewardState.Cannot
- else
- v.status = KfBossTreasureConst.RewardState.Have
- end
- -------------------------
- end
- end
-
- --获取活动结束时间
- function KfBossTreasureModel:GetActivityEndTime( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.BOSS_TREASURE
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- -------------------------
- if act_list and act_list.etime then
- return act_list.etime
- end
- return 0
- end
-
- --等级配置
- function KfBossTreasureModel:GetLvConf( sub_type,lv )
- local server_data = self:GetRewardInfo( sub_type )
- local server_max_lv = server_data and TableSize(server_data) or 0
- -------------------------
- sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.BOSS_TREASURE)
- if lv then
- for k,v in pairs(Config.Passrewards) do
- return Config.Passrewards["104@" .. sub_type .. "@" .. lv]
- end
- else
- local data = {}
- for k,v in pairs(Config.Passrewards) do
- if server_max_lv >= v.pass_lv then
- --有数据的才放进去
- data[k] = v
- end
- end
- return data
- end
- end
-
-
- function KfBossTreasureModel:GetRewardByLvAndOpTy( sub_type,lv,opty )
- local conf = self:GetLvConf( sub_type,lv )
- if not conf then return {} end
- local server_reward = self:GetRewardInfo( sub_type ) and self:GetRewardInfo( sub_type )[lv]
- if opty == 1 then--普通
- return stringtotable(server_reward and server_reward.normal_reward or conf.normal_rewards)
- elseif opty == 2 then--王牌
- return stringtotable(server_reward and server_reward.trump_reward or conf.trump_rewards)
- elseif opty == 3 then--都有
- local tab_1 = stringtotable(server_reward and server_reward.normal_reward or conf.normal_rewards)
- local tab_2 = stringtotable(server_reward and server_reward.trump_reward or conf.trump_rewards)
- for k,v in pairs(tab_2) do
- table.insert( tab_1, v )
- end
- return tab_1
- end
- end
-
- function KfBossTreasureModel:GetMaxRewardLv( sub_type )
- --取服务端和本地配置最低的等级
- local server_data = self:GetRewardInfo( sub_type )
- local server_max_lv = server_data and TableSize(server_data) or 0
- -------------------------
- local max_lv = 1
- for k,v in pairs(Config.Passrewards) do
- if v.sub_type == sub_type then
- max_lv = max_lv > v.pass_lv and max_lv or v.pass_lv
- end
- end
- return server_max_lv > max_lv and max_lv or server_max_lv
- end
-
- --获得当前选中的等级
- function KfBossTreasureModel:GetCurLvSelect( sub_type )
- local min_can_data = false--可领取的最低等级
- local max_have_data = false--已领取的最大等级
- local basic_data = self:GetBasicData( sub_type )
- local server_data = self:GetRewardInfo( sub_type )
- local server_max_lv = server_data and TableSize(server_data) or 0
- if basic_data then
- for k,v in pairs(basic_data.reward_list) do
- if v.lv <= server_max_lv then--要在服务端数据等级之内才有效
- if v.normal_status == KfBossTreasureConst.RewardState.Can or v.extra_status == KfBossTreasureConst.RewardState.Can then
- if min_can_data then
- min_can_data = v.lv > min_can_data.lv and min_can_data or v
- else
- min_can_data = v
- end
- end
- if v.normal_status == KfBossTreasureConst.RewardState.Have then
- if max_have_data then
- max_have_data = v.lv > max_have_data.lv and v or max_have_data
- else
- max_have_data = v
- end
- end
- end
- end
- end
- if min_can_data then
- return min_can_data.lv
- elseif max_have_data then
- local max_lv = self:GetMaxRewardLv( sub_type )
- return max_have_data.lv < max_lv and max_have_data.lv+1 or max_lv
- end
- return 1
- end
-
- --等级奖励红点
- function KfBossTreasureModel:GetLvRewardRed( need_new,sub_type )
- if not need_new then
- return self.red_lv_reward[sub_type]
- end
- self.red_lv_reward[sub_type] = false
- local basic_data = self:GetBasicData( sub_type )
- local server_data = self:GetRewardInfo( sub_type )
- local server_max_lv = server_data and TableSize(server_data) or 0
- if basic_data then
- for k,v in pairs(basic_data.reward_list) do
- if v.lv <= server_max_lv then--要在服务端数据等级之内才有效
- if v.normal_status == KfBossTreasureConst.RewardState.Can or v.extra_status == KfBossTreasureConst.RewardState.Can then
- self.red_lv_reward[sub_type] = true
- return true
- end
- end
- end
- end
- return false
- end
-
- --获取王牌宝典状态
- function KfBossTreasureModel:GetPayState( sub_type )
- local basic_data = self:GetBasicData( sub_type )
- if basic_data then
- return basic_data.is_pay
- end
- return KfBossTreasureConst.PayState.Lock
- end
-
- function KfBossTreasureModel:GetLvRewardStatus( sub_type,lv )
- local basic_data = self:GetBasicData( sub_type )
- if basic_data then
- for k,v in pairs(basic_data.reward_list) do
- if v.lv == lv then
- return v.normal_status,v.extra_status
- end
- end
- end
- return KfBossTreasureConst.RewardState.Cannot,KfBossTreasureConst.RewardState.Cannot
- end
-
- function KfBossTreasureModel:GetTaskConfByType( type_id )
- for k,v in pairs(Config.Phantomtasktype) do
- if v.task_type_id == type_id then
- return v
- end
- end
- end
-
- function KfBossTreasureModel:GetAllRed( need_new )
- if need_new then
- self.red_act = {}
- local temp_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.BOSS_TREASURE)
- for i,v in pairs(temp_list or {}) do
- self.red_act[v.sub_type] = self:GetAllRedBySubType(true,v.sub_type)
- end
- end
- for k,v in pairs(self.red_act) do
- if v then
- return true
- end
- end
- return false
- end
-
- function KfBossTreasureModel:GetAllRedBySubType( need_new,sub_type )
- if need_new then
- self:GetLvRewardRed(true,sub_type)
- KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.BossTreasure,nil,sub_type)
- end
- return self:GetLvRewardRed(false,sub_type)
- end
-
- function KfBossTreasureModel:GetIsMaxLv( sub_type )
- local base_data = self:GetBasicData(sub_type)
- if base_data then
- return base_data.con_lv == self:GetMaxRewardLv(sub_type)
- end
- end
-
- --后端发来的奖励配置
- function KfBossTreasureModel:GetRewardInfo( sub_type )
- return self.reward_info[sub_type]
- end
-
- --后端发来的奖励配置
- function KfBossTreasureModel:SetRewardInfo( sub_type,reward_list )
- local temp = {}
- for k,v in pairs(reward_list) do
- temp[v.lv] = v
- end
- self.reward_info[sub_type] = temp
- end
|