NewerTaskModel = NewerTaskModel or BaseClass(BaseVo, true)
|
|
local NewerTaskModel = NewerTaskModel
|
|
|
|
function NewerTaskModel:__init()
|
|
NewerTaskModel.Instance = self
|
|
self:Reset()
|
|
end
|
|
|
|
function NewerTaskModel:Reset()
|
|
self.award_finish_list = {} --已完成进度列表
|
|
self.cur_show_type = 0 --当前显示的类型
|
|
self.award_end_time = false --奖励显示的结束时间,单纯客户端显示
|
|
self.is_first_show = nil
|
|
self.show_info_list = {}
|
|
end
|
|
|
|
function NewerTaskModel:getInstance()
|
|
if NewerTaskModel.Instance == nil then
|
|
NewerTaskModel.Instance = NewerTaskModel.New()
|
|
end
|
|
return NewerTaskModel.Instance
|
|
end
|
|
|
|
function NewerTaskModel:SetAwardFinishList( vo )
|
|
for k,v in pairs(vo) do
|
|
local key = v.type .. "@" .. v.task_id
|
|
self.award_finish_list[key] = true
|
|
end
|
|
|
|
self:UpdateCurShowType()
|
|
end
|
|
|
|
function NewerTaskModel:UpdateCurShowType( )
|
|
local cfg = Config.Newertaskawards
|
|
for k,v in pairsByKeys(cfg) do
|
|
if not self.award_finish_list[k] then
|
|
self.cur_show_type = v.type
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function NewerTaskModel:GetCurShowType( )
|
|
return self.cur_show_type
|
|
end
|
|
|
|
function NewerTaskModel:SetSingleAwardFinish( vo )
|
|
local key = vo.type .. "@" .. vo.task_id
|
|
self.award_finish_list[key] = true
|
|
self:UpdateCurShowType()
|
|
end
|
|
|
|
function NewerTaskModel:IsAwardFinish( type, task_id )
|
|
local key = type .. "@" .. task_id
|
|
return self.award_finish_list[key]
|
|
end
|
|
|
|
function NewerTaskModel:GetCurShowInfo( type )
|
|
local show_type = type or self.cur_show_type
|
|
if self.show_info_list[show_type] then
|
|
return self.show_info_list[show_type]
|
|
end
|
|
self.show_info_list[show_type] = {}
|
|
local cfg = Config.Newertaskawards
|
|
for k,v in pairsByKeys(cfg) do
|
|
if v.type == show_type then
|
|
table.insert(self.show_info_list[show_type], v)
|
|
end
|
|
end
|
|
return self.show_info_list[show_type]
|
|
end
|
|
|
|
--下一个可领取的奖励,返回任务id(需要按顺序领取)
|
|
function NewerTaskModel:GetNextCanGetAward( type )
|
|
local cfg = self:GetCurShowInfo(type)
|
|
for i,v in ipairs(cfg) do
|
|
if not self:IsAwardFinish(v.type, v.task_id) then
|
|
return v.task_id
|
|
end
|
|
end
|
|
end
|
|
|
|
function NewerTaskModel:GetProgress( type )
|
|
local show_type = type or self.cur_show_type
|
|
--没有展示类型,就当做结束
|
|
if not show_type or show_type == 0 then
|
|
return 100, true, false
|
|
end
|
|
|
|
--任务完成进度
|
|
local cfg = Config.Newertaskprocess
|
|
local progress = 0
|
|
for k,v in pairsByKeys(cfg) do
|
|
if v.type == show_type then
|
|
if TaskModel:getInstance():IsTaskFinished(v.task_id) then
|
|
progress = v.task_pro
|
|
end
|
|
end
|
|
end
|
|
|
|
--奖励是否完成,是否可领取
|
|
local is_all_finish, is_can_get = true, false
|
|
local award_cfg = Config.Newertaskawards
|
|
for k,v in pairsByKeys(award_cfg) do
|
|
if not self.award_finish_list[k] then
|
|
is_all_finish = false
|
|
if TaskModel:getInstance():IsTaskFinished(v.task_id) then
|
|
is_can_get = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
return progress, is_all_finish, is_can_get
|
|
end
|
|
|
|
function NewerTaskModel:GetAwardEndTime( )
|
|
if not self.award_end_time then
|
|
local time_str = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.NEWER_TASK_END_TIME)
|
|
if time_str ~= "" then
|
|
self.award_end_time = tonumber(time_str)
|
|
end
|
|
end
|
|
return self.award_end_time
|
|
end
|
|
|
|
function NewerTaskModel:SetAwardEndTime( )
|
|
local end_time = TimeUtil:getServerTime() + 30*60
|
|
self.award_end_time = end_time
|
|
CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.NEWER_TASK_END_TIME, end_time)
|
|
CookieWrapper.Instance:WriteAll()
|
|
end
|
|
|
|
function NewerTaskModel:GetIsFirstShow( )
|
|
-- if self.is_first_show == nil then
|
|
-- local show_flag = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.NEWER_TASK_SHOW_FLAG)
|
|
-- if show_flag and tonumber(show_flag) == 1 then
|
|
-- self.is_first_show = false
|
|
-- else
|
|
-- self.is_first_show = true
|
|
-- end
|
|
-- end
|
|
-- return self.is_first_show
|
|
end
|
|
|
|
function NewerTaskModel:SetHasFirstShowFlag( )
|
|
-- if self.is_first_show ~= false then
|
|
-- self.is_first_show = false
|
|
-- local flag = 1
|
|
-- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.NEWER_TASK_SHOW_FLAG, flag)
|
|
-- CookieWrapper.Instance:WriteAll()
|
|
-- end
|
|
end
|