local LaterEnter_Model = {} local private = {} local EventSystem = require('Event/EventSystem') --奖励状态 LaterEnter_Model.RewardState = { Claimable = 0, --可领取的 Recevied = 1, --已领取 NotReach = 2, --未到达领取时间 } LaterEnter_Model.LaterEnterQuickPassType = { MainLine = 1, -- 主线关精英和噩梦 (速通传章节id) ResourceLevel = 2, -- 军需试炼 (速通传章节id) HeroBiography = 3, -- 名将列转(速通传武将id) GoldHeroActivity = 4, -- 金将活动(速通传活动id) } function LaterEnter_Model.OnStartup() EventSystem.Regist(EventID.FunctionUnlockUpdate, private.RefreshUnLockFunc) NetManager.RegisterMsgCB(MessageEnums.MessageLaterEnterReward, private.LaterEnterRewardResp) NetManager.RegisterMsgCB(MessageEnums.MessageLaterEnterQuickPass, private.LaterEnterQuickPassResp) private.laterEnterDay = 0 --晚进服几天 private.lastGetRewardTime = 0 --最后一次领奖时间戳 private.activityOpenDay = 0 --解锁活动第几天 private.receviedDays = {} --已领取奖励的天 [day] end function private.RefreshUnLockFunc(funcID, isUnlock) if funcID == MDL.Unlock.FunctionType.LaterEnter then if isUnlock and private.laterEnterDay > 0 then private.RefreshRedPoint() CTL.LaterEnter.TryAutoOpenMainUI() end end end function LaterEnter_Model.IsLaterEnterOpen() return private.laterEnterDay > 0 and MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.LaterEnter) end function LaterEnter_Model.GetLaterEnterDay() return private.laterEnterDay end function LaterEnter_Model.GetLastGetRewardTime() return private.lastGetRewardTime end function LaterEnter_Model.GetCurActivityOpenDay() return private.activityOpenDay end function LaterEnter_Model.GetRewardState(day) if private.receviedDays[day] then return LaterEnter_Model.RewardState.Recevied end if day > private.activityOpenDay then return LaterEnter_Model.RewardState.NotReach end return LaterEnter_Model.RewardState.Claimable end function LaterEnter_Model.IsHasNotGetReward() local days = CTL.LaterEnter.GetRewardDays() for i = 1, days do if not private.receviedDays[i] then return true end end return false end function LaterEnter_Model.SyncInfo(info) if IsProtoDataNotNil(info) then local maxLaterEnterDay = CTL.LaterEnter.GetMaxLaterEnterDay() private.laterEnterDay = info.LaterEnterDays > maxLaterEnterDay and maxLaterEnterDay or info.LaterEnterDays private.activityOpenDay = info.NowDays private.lastGetRewardTime = info.LastRewardTime for _, v in ipairs(info.GetDays) do private.receviedDays[v] = true end private.RefreshRedPoint() end end function private.RefreshRedPoint() if CTL.LaterEnter.IsCanShowEntrance() and private.HasClaimableReward() then CTL.RedPoint.AddRedPoint(CTL.RedPoint.RedPointKey.LaterEnter) else CTL.RedPoint.RemoveRedPoint(CTL.RedPoint.RedPointKey.LaterEnter) end end function private.HasClaimableReward() local rewardDays = CTL.LaterEnter.GetRewardDays() local days = private.activityOpenDay > rewardDays and rewardDays or private.activityOpenDay for i = 1, days do if LaterEnter_Model.GetRewardState(i) == LaterEnter_Model.RewardState.Claimable then return true end end return false end --是否可以速通 function LaterEnter_Model.IsCanQuickSkip(type, id) if not LaterEnter_Model.IsLaterEnterOpen() then return false end local cfgData = DataSheetManager.LaterEnterSweep:GetDataByID(private.laterEnterDay) if type == LaterEnter_Model.LaterEnterQuickPassType.GoldHeroActivity then local goldHeroInfoList = MDL.OperationActivity.GetOperationActivityInfo(MDL.OperationActivity.ActivityType.GoldenHero) if goldHeroInfoList then for i, v in pairs(goldHeroInfoList) do if v.startTime <= MDL.Player.GetCreatePlayerTime() then return true end end end elseif type == LaterEnter_Model.LaterEnterQuickPassType.HeroBiography then return cfgData.SweepHeroBiographyChapter and table.containValue(cfgData.SweepHeroBiographyChapter,id) and not CTL.Biography.IsHeroBiographyPassed(id) elseif type == LaterEnter_Model.LaterEnterQuickPassType.MainLine then return cfgData.SweepBarrierChapter and table.containValue(cfgData.SweepBarrierChapter,id) elseif type == LaterEnter_Model.LaterEnterQuickPassType.ResourceLevel then return cfgData.SweepResourcesChapter and table.containValue(cfgData.SweepResourcesChapter,id) end return false end function LaterEnter_Model.LaterEnterRewardReq(rewardDay) local msg = NetManager.GetPB("role_pb").LaterEnterRewardReq() msg.RewardDay = rewardDay NetManager.SendMessage(MessageEnums.MessageLaterEnterReward, msg) end function private.LaterEnterRewardResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_LaterEnter_GetReward) end end function LaterEnter_Model.LaterEnterQuickPassReq(type, params) local msg = NetManager.GetPB("later_enter_pb").LaterEnterQuickPassReq() msg.type = type for i, v in ipairs(params) do table.insert(msg.intParam, v) end NetManager.SendMessage(MessageEnums.MessageLaterEnterQuickPass, msg) end function private.LaterEnterQuickPassResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_LaterEnter_QuickPass) end end return LaterEnter_Model