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