local Welfare_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') Welfare_Controller.WelfareRpEventId = { TownHome = "Welfare_TownHome", Tab = "Welfare_Tab", } --绑定账户活动,对应Welfare 表里的ID Welfare_Controller.BindAccountIdType = { FBConcernId = 8, --FB关注 StoreReviewsId = 9, --商店评论 BindAccountId = 10, --绑定账户 } Welfare_Controller.BindAccountIdTable ={ Welfare_Controller.BindAccountIdType.BindAccountId, Welfare_Controller.BindAccountIdType.FBConcernId, Welfare_Controller.BindAccountIdType.StoreReviewsId, } --在福利页面添加页面需要4步 --1、按照ActivityOrderData表中的ID,写一个程序用的枚举 Welfare_Controller.WelfareType = { DailySignin = 100, -- 每日签到 EnergyGet = 101, -- 领体力(吃包子) LevelUpGift = 102, -- 等级礼包 RewardsRetrieve = 103, -- 奖励找回 ReservedGift = 104, -- 预约豪礼 RechargeReturn = 105, -- 公测充值返利 RechargeReturnTest = 106, -- 内测充值返利 SignInGift = 111, -- 十四日礼 OnlineReward = 112, -- 秘宝之匣 BindAccount = 113, -- 绑定账号 Survey = 114, -- 问卷调查 DailyDraw = 115, -- 每日福签 WeekendReward = 116, -- 休沐祭礼 AttentionReward = 117, -- 关注有礼 DouYinReward = 118, -- 抖音关注 SolicitContributions = 119, -- 投稿福利活动 VersionUpdate = 120, -- 版本更新 TestWelfare = 125, -- 内测福利,公测领奖 LiveBroadcast = 126, -- 直播领奖 FestivalLogin_1 = 130, -- 节日限时签到1 FestivalLogin_2 = 131, -- 节日限时签到2 DailyDrawJP = 9999, -- 每日福签日本新增主将 PreDownloadJP = 10000, -- 日服专用 —— 日服下载 } --2、添加每个页签红点相应的方法 private.WelfareRpJudgeFunc = { [Welfare_Controller.WelfareType.DailySignin] = MDL.DailySignin.HaveCanReceiveReward, [Welfare_Controller.WelfareType.EnergyGet] = CTL.EnergyGet.IsHasEnergyToGet, [Welfare_Controller.WelfareType.LevelUpGift] = MDL.Reward.IsHasLeveUpGiftToGet, [Welfare_Controller.WelfareType.RewardsRetrieve] = MDL.RewardsRetrieve.HaveCanRecoveryReward, [Welfare_Controller.WelfareType.RechargeReturn] = CTL.RechargeReturn.IsHasRechargeReturnRedpoint, [Welfare_Controller.WelfareType.RechargeReturnTest] = CTL.RechargeReturn.IsHasRechargeReturnRedpointTest, [Welfare_Controller.WelfareType.ReservedGift] = CTL.ReservedGift.IsShowRedPoint, [Welfare_Controller.WelfareType.SignInGift] = CTL.SignIn.IsShowStageSignInRedPoint, [Welfare_Controller.WelfareType.FestivalLogin_1] = MDL.FestivalLogin.HaveFestivalLogin1CanReceiveReward, -- 节日限时签到1 [Welfare_Controller.WelfareType.FestivalLogin_2] = MDL.FestivalLogin.HaveFestivalLogin2CanReceiveReward, -- 节日限时签到2 [Welfare_Controller.WelfareType.OnlineReward] = CTL.OnlineReward.IsShowRedPoint, [Welfare_Controller.WelfareType.Survey] = MDL.Questionnaire.IsShowQuestionnaireRedPoint, [Welfare_Controller.WelfareType.BindAccount] = MDL.Welfare.IsShowBindAccountRedPoint, -- 绑定账号相关页面红点 [Welfare_Controller.WelfareType.DailyDraw] = MDL.DrawStraws.IsShowDrawStrawsRp, [Welfare_Controller.WelfareType.WeekendReward] = MDL.WeekendReward.IsShowWeekendRewardRp, -- 休沐祭礼 [Welfare_Controller.WelfareType.AttentionReward] = CTL.Attention.IsShowAttentionRp, -- 关注有礼 [Welfare_Controller.WelfareType.VersionUpdate] = CTL.VersionUpdate.IsShowRp, [Welfare_Controller.WelfareType.TestWelfare] = MDL.TestWelfare.IsShowTestWelfareRedPoint, -- 内测福利,公测领奖-- 国服公测福利功能(仅公测使用,之后会将整个功能移除掉) [Welfare_Controller.WelfareType.PreDownloadJP] = MDL.PreDownloadJP.IsShowRp, -- 日服专用 —— 日服下载 [Welfare_Controller.WelfareType.DouYinReward] = CTL.Attention.IsShowFollowDouYinRp, [Welfare_Controller.WelfareType.SolicitContributions] = CTL.Attention.IsShowSolicitContributionsRp, } --3、添加每个页签对应的页面 --4、根据枚举添加打开界面的方法 function Welfare_Controller.OpenViewByWelfareType(view, type) local subView if type == Welfare_Controller.WelfareType.DailySignin then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIDailySignin), {singleOpen = false}) elseif type == Welfare_Controller.WelfareType.EnergyGet then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIWelfareEnergyPanel), nil, "Welfare/Energy/UIWelfareEnergyPanel") elseif type == Welfare_Controller.WelfareType.LevelUpGift then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIWelfareLevelUpReward)) elseif type == Welfare_Controller.WelfareType.RewardsRetrieve then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIWelfareRetrieve), nil, "Welfare/RewardsRetrieve/UIWelfareRetrieve") elseif type == Welfare_Controller.WelfareType.RechargeReturn then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIRechargeReturn)) elseif type == Welfare_Controller.WelfareType.RechargeReturnTest then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIRechargeReturnTest), nil, "Welfare/RechargeReturn/UIRechargeReturn") elseif type == Welfare_Controller.WelfareType.ReservedGift then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIWelfareReservedGift), { isPopUpView = false }) elseif type == Welfare_Controller.WelfareType.SignInGift then -- 新手十四日登录 subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.OperationActivity.UISignInGift)) elseif type == Welfare_Controller.WelfareType.FestivalLogin_1 or type == Welfare_Controller.WelfareType.FestivalLogin_2 then -- 节日限时签到 subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.OperationActivity.UIFestivalLoginReward), {welfareType = type}) elseif type == Welfare_Controller.WelfareType.OnlineReward then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIOnlineReward)) elseif type == Welfare_Controller.WelfareType.BindAccount then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIWelfareTestingGiftLihui)) elseif type == Welfare_Controller.WelfareType.Survey then if #MDL.Questionnaire.GetValidQuestionnaireIdList() > 0 then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIQuestionnairePanel)) end elseif type == Welfare_Controller.WelfareType.DailyDraw then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIDrawStrawsMain), {type = type, typeJP = Welfare_Controller.WelfareType.DailyDrawJP}) elseif type == Welfare_Controller.WelfareType.WeekendReward then -- 休沐祭礼 subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIWeekendRewardMain)) elseif type == Welfare_Controller.WelfareType.VersionUpdate then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIVersionUpdate)) elseif type == Welfare_Controller.WelfareType.TestWelfare then -- 国服公测福利功能(仅公测使用,之后会将整个功能移除掉) subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UITestWelfareContent)) elseif type == Welfare_Controller.WelfareType.AttentionReward then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIAttention)) elseif type == Welfare_Controller.WelfareType.PreDownloadJP then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIPreDownloadJP)) elseif type == Welfare_Controller.WelfareType.DouYinReward then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIFollowDouYin)) elseif type == Welfare_Controller.WelfareType.SolicitContributions then subView = view:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIContributeReward)) end return subView end function Welfare_Controller.OnStartup() EventSystem.Regist(EventID.FunctionUnlockUpdate, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.FunctionUnlockUpdate, private.RefreshInfoByFunction) EventSystem.Regist(EventID.UI_EnergyGet_EnergyStateInit, private.InitWelfareRedPointTree) EventSystem.Regist(EventID.UI_EnergyGet_EnergyStateRefresh, private.RefreshWelfareRedTree) -- 吃包子红点 EventSystem.Regist(EventID.UI_RewardRecovery_RefreshRedPoint, private.RefreshWelfareRedTree) -- 奖励找回红点 EventSystem.Regist(EventID.UI_ReservedGift_CloseView, private.RefreshWelfareRedTree) -- 预约豪礼红点 EventSystem.Regist(EventID.UI_DailySignin_Refresh, private.RefreshWelfareRedTree) -- 每日签到红点 EventSystem.Regist(EventID.UI_Welfare_RechargeReturnRewardState, private.RefreshWelfareRedTree) -- 充值返利红点 EventSystem.Regist(EventID.UI_Welfare_Questionnaire_Click, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.UI_WelfareBase_BindAccountRefreshRed, private.RefreshWelfareRedTree) -- 市场三连红点刷新 EventSystem.Regist(EventID.UI_Welfare_Questionnaire_Click, private.RefreshWelfareRedTree) -- 问卷红点 EventSystem.Regist(EventID.UI_OnlineReward_Refresh, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.UI_DrawStraws_RefreshRp, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.UI_WeekendReward_UpdateInfo, private.RefreshWelfareRedTree) -- 休沐祭礼红点 EventSystem.Regist(EventID.UI_TestWelfare_GetRewardCloseView, private.RefreshWelfareRedTree) -- 内测福利红点-- 国服公测福利功能(仅公测使用,之后会将整个功能移除掉) EventSystem.Regist(EventID.TeamLevelUpdate, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.AcquireSystemRedAfterUnlock, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.VersionUpdate, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.Attention_ShowRedPoint, private.RefreshWelfareRedTree) -- 关注有礼后红点 EventSystem.Regist(EventID.Attention_ShowRedPoint, private.RefreshWelfareRedTree) -- 关注有礼后红点 EventSystem.Regist(EventID.UI_FestivalLogin_RefreshView, private.RefreshWelfareRedTree) -- 节日签到红点 EventSystem.Regist(EventID.UI_StageSignIn_AcquireReward, private.RefreshWelfareRedTree) EventSystem.Regist(EventID.PreDownloadJP_ShowRedPoint, private.RefreshWelfareRedTree) -- 日服下载红点 private.isInit = false end function private.InitWelfareRedPointTree() if private.isInit then return end local townRoot = MDL.RedPoint.AddRootRpNode(Welfare_Controller.WelfareRpEventId.TownHome) local cellList = MDL.Welfare.GetWholeWelfareEventList() for cellIndex, cellData in ipairs(cellList) do local cellId = cellData.ID if private.WelfareRpJudgeFunc[cellId] then townRoot:AddChildRpNode(Welfare_Controller.WelfareRpEventId.Tab, cellId, {cellId = cellId}, {cellId}, private.WelfareRpJudgeFunc[cellId]()) end end MDL.RedPoint.InitAllNodes(Welfare_Controller.WelfareRpEventId.TownHome) private.isInit = true end function private.RefreshWelfareRedTree() if not private.isInit then private.InitWelfareRedPointTree() end local cellList = MDL.Welfare.GetWholeWelfareEventList() for cellIndex, cellData in ipairs(cellList) do local cellId = cellData.ID if private.WelfareRpJudgeFunc[cellId] then MDL.RedPoint.UpdateNodeStateByLogicParams(private.WelfareRpJudgeFunc[cellId](), Welfare_Controller.WelfareRpEventId.TownHome, cellId) end end end function Welfare_Controller.IsWelfareUnlock() if CTL.HotFix.CheckAssetIsReady("WelfareEntry") == false then return false end local cellList = MDL.Welfare.GetWelfareEventList() if #cellList > 0 then return true end return false end function Welfare_Controller.IsFuncBelongsToWelfare(funcId) for i, v in DataSheetManager.ActivityOrderData:GetEnumerator() do if funcId == v.FucID then return true end end return false end --开关玩法时执行 function private.RefreshInfoByFunction(funcId, isUnlock) if funcId == MDL.Unlock.FunctionType.ReservedGift then if not isUnlock then private.EndAndCloseActivity() end end end function private.EndAndCloseActivity() logging.log(LTAG.LOG, "EndAndCloseActivity Welfare_Controller") UIManager.CloseView(Const_UI_Lua.UIEnum.UIWelfareReservedGift) --关闭预约豪礼打脸图 end return Welfare_Controller