local MonthHonorOrder_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') function MonthHonorOrder_Controller.OnStartup() EventSystem.Regist(EventID.UI_SubjectMonth_UpdateHonorOrderInfo, private.CheckRedPoint) end function private.CheckRedPoint() local RedPointKey = CTL.RedPoint.RedPointKey if MonthHonorOrder_Controller.CanReceiveAnyLevelReward() then CTL.RedPoint.AddRedPoint(RedPointKey.SubjectMonth_HonorOrder_Reward) else CTL.RedPoint.RemoveRedPoint(RedPointKey.SubjectMonth_HonorOrder_Reward) end if MDL.MonthHonorOrder.HasTaskDone() then CTL.RedPoint.AddRedPoint(RedPointKey.SubjectMonth_HonorOrder_Task) else CTL.RedPoint.RemoveRedPoint(RedPointKey.SubjectMonth_HonorOrder_Task) end if MonthHonorOrder_Controller.CanReceiveAnyTaskRewardByType(MDL.MonthHonorOrder.TaskType.GameTask) then CTL.RedPoint.AddRedPoint(RedPointKey.SubjectMonthHonorOrderGameTask) else CTL.RedPoint.RemoveRedPoint(RedPointKey.SubjectMonthHonorOrderGameTask) end if MonthHonorOrder_Controller.CanReceiveAnyTaskRewardByType(MDL.MonthHonorOrder.TaskType.MonthTask) then CTL.RedPoint.AddRedPoint(RedPointKey.SubjectMonthHonorOrderMonthTask) else CTL.RedPoint.RemoveRedPoint(RedPointKey.SubjectMonthHonorOrderMonthTask) end end function MonthHonorOrder_Controller.GetSeniorRewardInfoList() local seniorRewardList = {} local battlePassId = MonthHonorOrder_Controller.GetBattlePassId() for k, v in DataSheetManager.VersionsBattlePassReward:GetDataByBattlePassID_RewardID(battlePassId) do if v.Node == 1 then table.insert(seniorRewardList, v) end end return seniorRewardList end function MonthHonorOrder_Controller.GetBattlePassId() local prefabData = CTL.SubjectMonth.GetVersionsPrefabData() return prefabData and prefabData.BattlePassID end function MonthHonorOrder_Controller.IsMaxLevel() local battlePassId = MonthHonorOrder_Controller.GetBattlePassId() local len = DataSheetManager.VersionsBattlePassReward:GetDataLengthByBattlePassID_RewardID(battlePassId) return len == MDL.MonthHonorOrder.GetLevel() end function MonthHonorOrder_Controller.CanReceiveExtra() if MonthHonorOrder_Controller.IsMaxLevel() then local battlePassId = MonthHonorOrder_Controller.GetBattlePassId() local eachLevelExp = DataSheetManager.VersionsBattlePassData:GetDataByBattlePassID(battlePassId).EachLevelExp return MDL.MonthHonorOrder.GetScore() >= eachLevelExp end return false end function MonthHonorOrder_Controller.CanReceiveLevelReward(grade, rewardId) if MDL.MonthHonorOrder.IsUnlockGrade(grade) and MDL.MonthHonorOrder.GetLevel() >= rewardId and not MDL.MonthHonorOrder.IsLevelRewardReceived(grade, rewardId) then return true else return false end end function MonthHonorOrder_Controller.CanReceiveAnyLevelReward() local battlePassId = MonthHonorOrder_Controller.GetBattlePassId() if not battlePassId then return false end for _, grade in pairs(MDL.MonthHonorOrder.HonorOrderGrade) do if MDL.MonthHonorOrder.IsUnlockGrade(grade) then for _, cfg in DataSheetManager.VersionsBattlePassReward:GetDataByBattlePassID_RewardID(battlePassId) do if MonthHonorOrder_Controller.CanReceiveLevelReward(grade, cfg.RewardID) then return true end end end end if MonthHonorOrder_Controller.CanReceiveExtra() then return true end return false end function MonthHonorOrder_Controller.CanReceiveAnyTaskRewardByType(type) local info = MDL.MonthHonorOrder.GetTaskInfo(type) if info then local enumDone = MDL.OACommon.ActivityTaskState.Done for _, v in ipairs(info) do if v.taskStatus == enumDone then return true end end end return false end function MonthHonorOrder_Controller.CanReceiveAnyTaskReward() for _, v in pairs(MDL.MonthHonorOrder.TaskType) do if MonthHonorOrder_Controller.CanReceiveAnyTaskRewardByType(v) then return true end end return false end function MonthHonorOrder_Controller.GetLevelRewardMoveIndex() local battlePassId = MonthHonorOrder_Controller.GetBattlePassId() for _, cfg in DataSheetManager.VersionsBattlePassReward:GetDataByBattlePassID_RewardID(battlePassId) do local rewardId = cfg.RewardID for _, grade in pairs(MDL.MonthHonorOrder.HonorOrderGrade) do if MonthHonorOrder_Controller.CanReceiveLevelReward(grade, rewardId) then return rewardId end end end return MDL.MonthHonorOrder.GetLevel() end function MonthHonorOrder_Controller.GetGradeRewardList(grade) local honorOrderGrade = MDL.MonthHonorOrder.HonorOrderGrade local itemMap = {} local itemList = {} local battlePassId = MonthHonorOrder_Controller.GetBattlePassId() local versionsBattlePassData = DataSheetManager.VersionsBattlePassData:GetDataByBattlePassID(battlePassId) local level = MDL.MonthHonorOrder.GetLevel() if grade == honorOrderGrade.Grade1 then level = level + versionsBattlePassData.PaidExp1 / versionsBattlePassData.EachLevelExp for _, cfg in DataSheetManager.VersionsBattlePassReward:GetDataByBattlePassID_RewardID(battlePassId) do if cfg.RewardID <= level then itemMap[cfg.PaidItem1] = (itemMap[cfg.PaidItem1] or 0) + cfg.PaidNum1 else break end end elseif grade == honorOrderGrade.Grade2 then level = level + versionsBattlePassData.PaidExp2 / versionsBattlePassData.EachLevelExp for _, cfg in DataSheetManager.VersionsBattlePassReward:GetDataByBattlePassID_RewardID(battlePassId) do if cfg.RewardID <= level then itemMap[cfg.PaidItem2] = (itemMap[cfg.PaidItem2] or 0) + cfg.PaidNum2 else break end end end for k, v in pairs(itemMap) do table.insert(itemList, {ItemID = k, ItemNum = v}) end return itemList end function MonthHonorOrder_Controller.IsAllGradeUnlock() local honorOrderGrade = MDL.MonthHonorOrder.HonorOrderGrade return MDL.MonthHonorOrder.IsUnlockGrade(honorOrderGrade.Grade1) and MDL.MonthHonorOrder.IsUnlockGrade(honorOrderGrade.Grade2) end return MonthHonorOrder_Controller