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
|