local Welfare_Model = {} local private = {} private.UnlockFuncType={ CommonUnlock = 1, --通用解锁类型(GM) AMSUnlock = 2 --走AMS的解锁 } function Welfare_Model.OnStartup() private.welfareTabList = {} end function Welfare_Model.GetWholeWelfareEventList() if #private.welfareTabList == 0 then for i, v in DataSheetManager.ActivityOrderData:GetEnumerator() do table.insert(private.welfareTabList, v) end end return private.welfareTabList end function Welfare_Model.GetWelfareEventList() local welfareTabList = {} if CTL.HotFix.CheckAssetIsReady("Welfare") == false then if CTL.SignIn.IsShowSecondDayHint() == true then --福利资源没下完,只有十四日礼入口 table.insert(welfareTabList, DataSheetManager.ActivityOrderData:GetDataByID(CTL.Welfare.WelfareType.SignInGift)) end else for i, v in ipairs(Welfare_Model.GetWholeWelfareEventList()) do if v.FucType == private.UnlockFuncType.CommonUnlock then --市场三连走单独的解锁判断 if v.ID == CTL.Welfare.WelfareType.BindAccount then local isShow = Welfare_Model.CheckBindAccountUnlock() if isShow then table.insert(welfareTabList, v) end elseif v.ID == CTL.Welfare.WelfareType.PreDownloadJP then -- 日服下载单独判断 if CTL.PreDownloadJP.CanShowPreDownloadJP() then table.insert(welfareTabList, v) end elseif MDL.Unlock.IsUnlock(v.FucID) then local welfareId = v.ID -- 奖励找回功能有特殊需求,不是常驻界面。当玩家前一天无可找回时不显示 if welfareId == CTL.Welfare.WelfareType.RewardsRetrieve then if not MDL.RewardsRetrieve.RewardRecoveryInfoIsEmpty() then table.insert(welfareTabList, v) end elseif welfareId == CTL.Welfare.WelfareType.ReservedGift then -- 预约豪礼 if CTL.ReservedGift.IsShowRedPoint() then table.insert(welfareTabList, v) end elseif welfareId == CTL.Welfare.WelfareType.RechargeReturn then if CTL.RechargeReturn.IsShowRechargeReturn() then table.insert(welfareTabList, v) end elseif welfareId == CTL.Welfare.WelfareType.RechargeReturnTest then if CTL.RechargeReturn.IsShowRechargeReturnTest() then table.insert(welfareTabList, v) end elseif welfareId == CTL.Welfare.WelfareType.WeekendReward then -- 休沐祭礼 if MDL.WeekendReward.WeekendRewardIsOpen() then table.insert(welfareTabList, v) end elseif v.ID == CTL.Welfare.WelfareType.TestWelfare then -- 内测福利 -- 国服公测福利功能(仅公测使用,之后会将整个功能移除掉) if GameAppInfo.IsChinesePackage() and MDL.TestWelfare.CheckIsShowEntry() then table.insert(welfareTabList, v) end elseif welfareId == CTL.Welfare.WelfareType.AttentionReward then -- 关注有礼(仅官网渠道中显示) if SDKUtil.ChannelID == LuaConst.SDKChannelId.Hero_Android or SDKUtil.ChannelID == LuaConst.SDKChannelId.Hero_iOS then if MDL.Attention.ShowAttentionTab(welfareId) then table.insert(welfareTabList, v) end end elseif welfareId == CTL.Welfare.WelfareType.DouYinReward or welfareId == CTL.Welfare.WelfareType.SolicitContributions then -- 关注有礼(仅官网渠道中显示) if SDKUtil.ChannelID == LuaConst.SDKChannelId.Hero_Android or SDKUtil.ChannelID == LuaConst.SDKChannelId.Hero_iOS then if MDL.Attention.ShowAttentionTab(welfareId) then table.insert(welfareTabList, v) end end else table.insert(welfareTabList, v) end end elseif v.FucType == private.UnlockFuncType.AMSUnlock then local activityType = v.FucID if CTL.OperationActivity.IsOperationActivityTypeOpen(activityType) and CTL.OperationActivity.IsOperationActivityTypeUnlock(activityType) then if v.ID == CTL.Welfare.WelfareType.FestivalLogin_1 or v.ID == CTL.Welfare.WelfareType.FestivalLogin_2 then if MDL.FestivalLogin.GetFestivalLoginIsOpen(v.ID) then table.insert(welfareTabList, v) end else table.insert(welfareTabList, v) end end end end table.sort(welfareTabList, private.SortWelfareList) end return welfareTabList end function private.SortWelfareList(a, b) local pA = a.ChildTab local pB = b.ChildTab if pA ~= pB then return pA > pB else return a.ID < b.ID end end --绑定账号是否解锁 function Welfare_Model.CheckBindAccountUnlock() local isShow = false if not GameAppInfo.IsPCPackage() then for i,v in ipairs(CTL.Welfare.BindAccountIdTable) do local data = DataSheetManager.Welfare:GetDataByID(v) if (v == CTL.Welfare.BindAccountIdType.BindAccountId or v == CTL.Welfare.BindAccountIdType.FBConcernId or v == CTL.Welfare.BindAccountIdType.StoreReviewsId) and CTL.TestingGift.CheckTabShow(data) then isShow = true break end end end return isShow end --绑定账号相关页面红点 function Welfare_Model.IsShowBindAccountRedPoint() local isShow = Welfare_Model.CheckBindAccountUnlock() if isShow == false then return false end for i, v in ipairs(CTL.Welfare.BindAccountIdTable) do local redKey = MDL.TestingGift.RedPointKey[v] if redKey then local isRed = CTL.RedPoint.GetRedPointActive(redKey) if isRed then return true end end end return false end return Welfare_Model