local CycleRecharge_Controller = {} local EventSystem = require('Event/EventSystem') local private = {} function CycleRecharge_Controller.OnStartup() EventSystem.Regist(EventID.UI_OperationActivity_InfoChanged, private.CheckFuncOpenIssue) EventSystem.Regist(EventID.AcquireSystemRedAfterUnlock, private.CheckFuncOpenIssue) EventSystem.Regist(EventID.FunctionUnlockUpdate, private.RefreshInfoByFunction) EventSystem.Regist(EventID.New_Day_Refresh, private.OnNewDayChanged) private.ActivityType = MDL.OperationActivity.ActivityType.CycleRecharge end function CycleRecharge_Controller.OpenMainPanel() local infos = MDL.OperationActivity.GetOperationActivityInfo(private.ActivityType) if infos then for _, info in pairs(infos) do if CTL.OperationActivity.IsOperationActivityOpen(info) then UIManager.OpenView(Const_UI_Lua.UIEnum.UICycleRecharge) EventSystem.Dispatch(EventID.UI_CycleRecharge_UpdateRedPoint) return end end end logging.error(LTAG.ERROR, "[CycleRecharge]没有活动可以打开") end function CycleRecharge_Controller.GetRechargeActivityId() local infos = MDL.OperationActivity.GetOperationActivityInfo(private.ActivityType) if infos then for _, info in pairs(infos) do if CTL.OperationActivity.IsOperationActivityOpen(info) then return info.activityId end end end return 0 end function CycleRecharge_Controller.GetTimeToEnd() local infos = MDL.OperationActivity.GetOperationActivityInfo(private.ActivityType) if infos then for _, info in pairs(infos) do if CTL.OperationActivity.IsOperationActivityOpen(info) then local endTime = info.endTime local nowTime = UTL.Time.GetServerTimestamp() return endTime - nowTime end end end end --存在未领取的奖励时入口图标有红点 function CycleRecharge_Controller.GetCycleRechargeRedPoint() local infos = MDL.OperationActivity.GetOperationActivityInfo(private.ActivityType) if infos then for _, info in pairs(infos) do if CTL.OperationActivity.IsOperationActivityOpen(info) then local myPoint = MDL.CycleRecharge.GetRechargePoint() local received = MDL.CycleRecharge.GetReceivedRecharge() for _, v in MDL.OperationActivity.CycleRecharge:GetEnumeratorByActivityID(info.activityId) do if myPoint >= v.Integral and not table.containValue(received, v.ID) then return true end end return end end end return false end --GMS开关变化时刷新 function private.RefreshInfoByFunction(funcId, isUnlock) if funcId == MDL.Unlock.FunctionType.CycleRecharge then if not isUnlock then UIManager.CloseView(Const_UI_Lua.UIEnum.UICycleRecharge) end end end function private.CheckFuncOpenIssue() if not CTL.OperationActivity.IsOperationActivityTypeOpen(private.ActivityType) or not CTL.OperationActivity.IsOperationActivityTypeUnlock(private.ActivityType) or not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.CycleRecharge) then UIManager.CloseView(Const_UI_Lua.UIEnum.UICycleRecharge) end end function private.OnNewDayChanged() EventSystem.Dispatch(EventID.FunctionUnlockUpdate, MDL.Unlock.FunctionType.WeekTotalCharge, MDL.CycleRecharge.IsOpenWeekTotalCharge()) end return CycleRecharge_Controller