源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

153 строки
4.1 KiB

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