PGRData/Script/matrix/xmanager/XFunctionManager.lua
2024-09-01 22:49:41 +02:00

727 lines
No EOL
24 KiB
Lua

local XFunctionTime = require("XEntity/XFunctional/XFunctionTime")
local tableSort = table.sort
local tableInsert = table.insert
local TABLE_SECONDARY_FUNCTIONAL_PATH = "Client/Functional/SecondaryFunctional.tab"
local TABLE_SKIP_FUNCTIONAL_PATH = "Client/Functional/SkipFunctional.tab"
local TABLE_FUNCTIONAL_OPEN = "Share/Functional/FunctionalOpen.tab"
--local TABLE_MAIN_AD = "Client/Functional/MainAd.tab"
local TABLE_MAIN_ACTIVITY_SKIP_PATH = "Client/Functional/MainActivitySkip.tab"
local SecondaryFunctionalTemplates = {} --二级功能配置
local SkipFunctionalTemplates = {} --跳转功能表
local FunctionalOpenTemplates = {} --功能开启表
-- local MainAdTemplates = {} --广告栏
local MainActivitySkipTemplates = {} --活动便捷入口
local ShieldFuncDic = {} -- 功能过滤
local ShieldUiNameDic = {} -- 功能对应的界面过滤
local FunctionTimeData = {} --功能开启时间
XFunctionManager = XFunctionManager or {}
XFunctionManager.SkipOrigin = {
System = 1, -- 系统来源
SonSystem = 2, -- 子系统来源
Section = 3, -- 副本来源
Main = 4, -- 主界面
Webpage = 5, -- 网页
SystemWithArgs = 6, -- 跳转特定标签页的系统
Custom = 7, -- 跳转自定义系统(大部分副本)
Dormitory = 8, -- 跳转宿舍
}
XFunctionManager.OpenCondition = {
Default = 0, -- 默认
TeamLevel = 1, -- 战队等级
FinishSection = 2, -- 通关副本
FinishTask = 3, -- 完成任务
FinishNoob = 4, -- 完成新手
Main = 5, -- 掉线返回主界面
}
-- XFunctionManager.OpenHint = {
-- TeamLevelToOpen,
-- CopyToOpen,
-- FinishToOpen
-- }
--这个枚举由服务端制定
XFunctionManager.FunctionName = {
Target = 1, --目标
SkipObligate = 2, --预留
Deposit = 3, --充值
Setting = 4, --设置
SignIn = 5, --签到
Feedback = 6, --反馈
Welfare = 7, --福利
ExchangeCode = 8, --兑换码
Character = 101, --构造体
CharacterGrade = 102, --构造体晋升
CharacterQuality = 103, --构造体进化
CharacterSkill = 104, --构造体技能
CharacterEnhanceSkill = 107, --构造体补强技能
SpCharacterEnhanceSkill = 108, --SP角色补强技能
CharacterExhibition = 105, --构造体展示厅
Isomer = 106, --感染体
Equip = 201, --装备
EquipStrengthen = 202, --装备强化
EquipResonance = 203, --装备共鸣
EquipStrengthenAutoSelect = 204, --装备一键强化
EquipAwake = 205, --装备觉醒
EquipQuick = 206, --一键培养
EquipGuideRecommend = 207, --装备目标-推荐
EquipGuideSetTarget = 208, --装备目标-设定
EquipOverrun = 209, --装备超限
Bag = 301, --背包
DrawCard = 401, --研发
DrawCardEquip = 402, --研发装备
ActivityDrawCard = 403, --活动研发
Lotto = 10432,--皮肤抽卡
Task = 501, --任务
TaskDay = 503, --任务每日
TaskActivity = 504, --任务活动
TaskWeekly = 505, --任务每周
Player = 601, --战队
PlayerBrand = 602, --战队烙印
PlayerAchievement = 603, --战斗成就
ReviewActivity = 604,
Mail = 701, --邮件
SocialFriend = 801, --好友
SocialChat = 802, --聊天
Domitory = 901, --基建(弃用)
Dorm = 902, --宿舍
DormQuest = 903, -- 宿舍委托
ShopCommon = 1001, --普通商店
ShopActive = 1002, --活动商店
ShopPoints = 1003, --积分商店
Dispatch = 1201, --派遣
BountyTask = 1301, --赏金
MaintainerAction = 1302, --维持者行动(大富翁)
MentorSystem = 1303, --师徒系统
MainLineTRPG = 1304, --主线跑团玩法(终焉福音)
NieR = 1305, --尼尔玩法
Pokemon = 1306, --口袋战双
ChessPursuitMain = 1307, -- 追击玩法
SpringFestivalActivity = 1308, --春节集字活动
WhiteValentineDay = 1309, -- 白色情人节约会活动
MoeWar = 1310, -- 萌战
FavorabilityMain = 1400, --好感度
FavorabilityFile = 1401, --好感度-档案
FavorabilityStory = 1402, --好感度-剧情
FavorabilityGift = 1403, --好感度-礼物
FavorabilityComeAcross = 1404, --好感度-偶遇
CustomUi = 1501, --自定义控件
FubenChallengeTrial = 1601, --试炼玩法
Prequel = 1701, --断章
Practice = 1800, --教学
PartnerTeaching = 1801, -- 宠物教学
Course = 1802, --考级系统
Guild = 1901, --指挥部
GuildBoss = 1904, --工会boss
OtherHelp = 2001, --助战
Collection = 2100, --收藏品
Medal = 2101, --勋章
Nameplate = 2102, --铭牌
Archive = 2200, --图鉴系统
SubMenu = 2300, -- 主界面二级菜单
Photograph = 2400, -- 拍照模式
PurchaseAdd = 3000, --累计充值
PicComposition = 4000, --看图作文
WindowsInlay = 4001, --外站活动
Partner = 5001, --伙伴系统
ActivityCalendar = 6000, --活动日历
InvitationCodeShare = 8001, -- 邀请码分享
FubenDifficulty = 10102, --副本困难
FubenNightmare = 10103, --据点战
FubenChallenge = 10201, --挑战副本
FubenChallengeTower = 10202, --挑战爬塔
FubenChallengeBossSingle = 10203, --挑战单机Boss
FubenArena = 10204, -- 竞技
Stronghold = 10205, -- 超级据点
ActivityBrief = 10300, --活动简介
FubenActivity = 10301, --活动副本
FubenActivityOnlineBoss = 10302, --活动联机boss
FubenActivityBranch = 10303, --活动支线
FubenActivitySingleBoss = 10304, --活动单挑boss
FubenActivityTrial = 10305, --试验区
FestivalActivity = 10306, --节日活动(活动记录)
FubenActivityFestival = 10306, --节日活动
BabelTower = 10307, --巴别塔计划
FubenActivityMainLine = 10308, --活动主线
RepeatChallenge = 10309, --复刷本
RogueLike = 10310, --爬塔
FubenAssign = 10311, --占领玩法
ArenaOnline = 10312, --区域联机玩法
FubenUnionKill = 10313, --狙击战
Extra = 10314, -- 外篇旧闻
ShortStory = 10352, --浮点纪实
FubenInfesotorExplore = 10315, --感染体玩法
SpecialTrain = 10316, -- 特训关
EliminateGame = 10317, -- 特训关小游戏
Expedition = 10318, -- 虚像地平线
ClickClearGame = 10319, -- 中元节点消小游戏
WorldBoss = 10320, -- 世界boss
RpgTower = 10321, -- 兵法蓝图
HonorLevel = 10322, -- 荣耀勋阶
FubenZhongYuanFestival = 10323, -- 中元节副本
DragPuzzleGame = 10324, -- 拼图小游戏
NewCharAct = 10325, -- 新角色教学
ChristmasTreeGame = 10326, -- 圣诞树装扮小游戏
CoupletGame = 10328, -- 对联小游戏
FingerGuessing = 10329, --猜拳小游戏
FubenSimulatedCombat = 10330, -- 模拟作战
InvertCardGame = 10331, -- 翻牌小游戏
PokerGuessing = 10333, --翻牌猜大小
MovieAssemble = 10334, -- 剧情合集
MineSweeping = 10335, -- 扫雷
FubenHack = 10336, -- 骇入玩法
Reform = 10337, -- 改造玩法
ScratchTicket = 10338, -- 刮刮卡
KillZone = 10339, --杀戮空间
SuperTower = 10340, -- 超级爬塔
FashionStory = 10341, -- 涂装剧情活动
Passport = 10342, --战斗通行证
FubenCoupleCombat = 10343, -- 双人下场玩法
RpgMakerActivity = 10345, --21年端午活动
LivWarmActivity = 10347, --超丽芙预热活动
LivWarmSoundActivity = 10348, --超丽芙预热音频活动
AreaWar = 10349, --全服决战
SuperSmashBros = 10350, --超限乱斗
MemorySave = 10351, -- 周年意识营救
FubenDaily = 10401, --日常副本
FubenDailyYSHTX = 10402, --日常意识海特训
FubenDailyEMEX = 10403, --日常EMEX行动
FubenDailyResource = 10404, --日常资源副本
FubenExplore = 10405, --探索
FubenDailyGZTX = 10406, --日常構造體特訓
FubenDailyXYZB = 10407, --日常稀有裝備
FubenDailyTPCL = 10408, --日常突破材料
FubenDailyZBJY = 10409, --日常裝備經驗
FubenDailyLMDZ = 10410, --日常螺母大戰
FubenDailyJNQH = 10411, --日常技能强化
FubenDailyFZJQH = 10412, --日常辅助机强化
FubenDailyShop = 10450, --日常补给商店
SameColor = 10413, -- 三消游戏
RunGame = 10414, --二周年预热-赛跑小游戏
DiceGame = 10415, --元旦预热-投骰子小游戏
Maverick = 10416, -- 射击玩法
NewYearLuck = 10417, --元旦奖券小游戏
HitMouse = 10418, --打地鼠小游戏
BodyCombineGame = 10419, --哈卡玛小游戏
Theatre = 10420, --肉鸽舞台剧
Doomsday = 10421, --末日生存(模拟经营)
PivotCombat = 10422, --SP枢纽作战
Escape = 10423, --大逃杀活动
DoubleTowers = 10424, --动作塔防
GoldenMiner = 10426, --黄金矿工活动
WeekChallenge = 10428, --周挑战
MultiDim = 10427, -- 多维挑战
TaikoMaster = 10430, --音游
TwoSideTower = 10431, --正逆塔
BiancaTheatre = 10433, --肉鸽2.0
SummerSignIn = 10434, --夏日签到
NewbieTask = 10435, -- 新手任务二期
CharacterTower = 10436, --本我回廊(角色塔)
Rift = 10437, -- 大秘境
ColorTable = 10438, -- 调色板战争
FubenBrilliantWalk = 10439, -- 光辉同行
FubenAwareness = 10440, -- 意识公约副本
SkinVote = 10442, -- 皮肤投票
Restaurant = 10443, -- 餐厅玩法
Maverick2 = 10444, -- 异构阵线2.0
MonsterCombat = 10447, -- 战双BVB
CerberusGame = 10448, -- 三头犬小队
SlotMachines = 10449, -- 老虎机
Transfinite = 10451, -- 超限连战
NewActivityCalendar = 10452, -- 新活动周历
Theatre3 = 10453, -- 肉鸽3.0
Turntable = 10454, -- 夏日幸运星
}
XFunctionManager.FunctionType = {
System = 1,
Stage = 2,
}
XFunctionManager.TimeState = {
Start = 1,
End = 2,
}
function XFunctionManager.Init()
FunctionalOpenTemplates = {}
SecondaryFunctionalTemplates = XTableManager.ReadByIntKey(TABLE_SECONDARY_FUNCTIONAL_PATH, XTable.XTableSecondaryFunctional, "Id")
SkipFunctionalTemplates = XTableManager.ReadByIntKey(TABLE_SKIP_FUNCTIONAL_PATH, XTable.XTableSkipFunctional, "SkipId")
MainActivitySkipTemplates = XTableManager.ReadByIntKey(TABLE_MAIN_ACTIVITY_SKIP_PATH, XTable.XTableMainActivitySkip, "Id")
--local mainAdTemplates = XTableManager.ReadByIntKey(TABLE_MAIN_AD, XTable.XTableMainAd, "Id")
--for _, v in pairs(mainAdTemplates) do
-- if not MainAdTemplates[v.ChannelId] then
-- MainAdTemplates[v.ChannelId] = {}
-- end
--
-- tableInsert(MainAdTemplates[v.ChannelId], v)
--end
--MainAdTemplates = XReadOnlyTable.Create(MainAdTemplates)
local listOpenFunctional = XTableManager.ReadByIntKey(TABLE_FUNCTIONAL_OPEN, XTable.XTableFunctionalOpen, "Id")
for k, v in pairs(listOpenFunctional) do
local IsHasCondition = false
for _, id in pairs(v.Condition) do
if id ~= 0 then
IsHasCondition = true
end
end
if IsHasCondition then
FunctionalOpenTemplates[k] = v
end
end
XFunctionManager.IsOpen = false
end
function XFunctionManager.FilterUi(evt, args, ...)
local uiName = args[0].UiData.UiName
if ShieldUiNameDic[uiName] then
XUiManager.TipText("ShieldFunctionTip", nil, true)
XLuaUiManager.RunMain()
end
end
function XFunctionManager.FilterUiFinish()
ShieldUiNameDic = {}
CsXGameEventManager.Instance:RemoveEvent(CS.XEventId.EVENT_UI_ALLOWOPERATE, XFunctionManager.FilterUi)
XEventManager.RemoveEventListener(XEventId.EVENT_MAINUI_ENABLE, XFunctionManager.FilterUiFinish)
end
function XFunctionManager.InitShieldFuncData(shieldFuncList, inGameUpdate)
ShieldFuncDic = {}
ShieldUiNameDic = {}
local EnableFilterUi = true
for _, v in ipairs(shieldFuncList) do
ShieldFuncDic[v] = true
if inGameUpdate then
for _, uiName in ipairs(XFunctionConfig.GetShieldFuncUiName(v)) do
if CS.XFight.Instance and XLuaUiManager.IsUiShow(uiName) then
EnableFilterUi = false
XUiManager.TipText("ShieldFunctionTip", nil, true)
XLuaUiManager.RunMain()
ShieldUiNameDic = {}
end
ShieldUiNameDic[uiName] = true
end
end
end
if inGameUpdate and EnableFilterUi then
CsXGameEventManager.Instance:RegisterEvent(CS.XEventId.EVENT_UI_ALLOWOPERATE, XFunctionManager.FilterUi)
XEventManager.AddEventListener(XEventId.EVENT_MAINUI_ENABLE, XFunctionManager.FilterUiFinish)
end
end
--检测是否可以过滤该功能
function XFunctionManager.CheckFunctionFitter(id)
return ShieldFuncDic[id]
end
--界面跳转
function XFunctionManager.SkipInterface(id, ...)
if id == 0 then
return
end
local list = XFunctionConfig.GetSkipFuncCfg(id)
if list == nil then
XLog.Error("XFunctionManager.SkipInterface error: can not found list, id = " .. tostring(id))
return
end
if list.FunctionalId ~= nil and list.FunctionalId ~= 0 then
-- 屏蔽功能
if XFunctionManager.CheckFunctionFitter(list.FunctionalId) then
XUiManager.TipMsg(CS.XTextManager.GetText("FunctionalMaintain"))
return
end
if not XFunctionManager.DetectionFunction(list.FunctionalId) then
return
end
end
-- 提审包屏蔽,跳转到主线页面
if XUiManager.IsHideFunc and list.IsHideFunc then
-- XLuaUiManager.Open("UiFuben", XDataCenter.FubenManager.StageType.Mainline, nil, 1)
XLuaUiManager.Open("UiNewFuben", XFubenConfigs.ChapterType.MainLine)
return
end
if list.Origin == XFunctionManager.SkipOrigin.System then
if XLuaUiManager.IsUiShow(list.UiName) then
return
end
XLuaUiManager.Open(list.UiName)
end
if list.Origin == XFunctionManager.SkipOrigin.SonSystem then
if XLuaUiManager.IsUiShow(list.UiName) then
return
end
if list.UiName == "UiCharacter" then
XLuaUiManager.Open(list.UiName, list.ParamId, nil, nil, nil, true)
elseif list.UiName == "UiActivityBase" then
XLuaUiManager.Open(list.UiName, list.ParamId, list.CustomParams[1], list.CustomParams[2])
elseif list.UiName == "UiSet" then
XLuaUiManager.Open(list.UiName, false, list.ParamId or 4)
elseif list.UiName == "UiActivityBase" then
XLuaUiManager.Open(list.UiName, list.ParamId, list.CustomParams[1], list.CustomParams[2])
elseif list.UiName == "UiPurchase" and id == 50024 then -- 海外修改,修复快捷礼包数据清空问题#99703
XLuaUiManager.Open(list.UiName, list.ParamId, false);
else
XLuaUiManager.Open(list.UiName, list.ParamId)
end
end
if list.Origin == XFunctionManager.SkipOrigin.Section then
XDataCenter.FubenManager.GoToFuben(list.ParamId)
end
if list.Origin == XFunctionManager.SkipOrigin.Main then
if XLuaUiManager.IsUiShow("UiMain") then
return
end
CS.XResourceRecord.Stop()
XLuaUiManager.RunMain()
end
if list.Origin == XFunctionManager.SkipOrigin.SystemWithArgs then
CS.XResourceRecord.FunctionEnter(id)
XDataCenter.FunctionalSkipManager.SkipSystemWidthArgs(list)
return
end
if list.Origin == XFunctionManager.SkipOrigin.Custom then
CS.XResourceRecord.FunctionEnter(id)
XDataCenter.FunctionalSkipManager.SkipCustom(list, ...)
return
end
if list.Origin == XFunctionManager.SkipOrigin.Dormitory then
XDataCenter.FunctionalSkipManager.SkipDormitory(list)
return
end
-- if list.Origin == XFunctionManager.SkipOrigin.Webpage then
-- end
end
function XFunctionManager.CheckSkipInDuration(id)
local cfg = XFunctionConfig.GetSkipFuncCfg(id)
if not cfg then
return false
end
local timeId = cfg.TimeId
local startTimeStr = cfg.StartTime
local closeTimeStr = cfg.CloseTime
if timeId and timeId ~= 0 then
return XFunctionManager.CheckInTimeByTimeId(timeId)
else
local nowTimeStamp = XTime.GetServerNowTimestamp()
if startTimeStr and startTimeStr ~= "" and closeTimeStr and closeTimeStr ~= "" then
local startTime = XTime.ParseToTimestamp(startTimeStr)
local closeTime = XTime.ParseToTimestamp(closeTimeStr)
return (nowTimeStamp >= startTime and nowTimeStamp <= closeTime)
elseif startTimeStr and startTimeStr ~= "" then
local startTime = XTime.ParseToTimestamp(startTimeStr)
return nowTimeStamp >= startTime
elseif closeTimeStr and closeTimeStr ~= "" then
local closeTime = XTime.ParseToTimestamp(closeTimeStr)
return nowTimeStamp < closeTime
end
end
return true
end
function XFunctionManager.GetSkipList(id)
if SkipFunctionalTemplates[id] then
return SkipFunctionalTemplates[id]
end
end
function XFunctionManager.IsCanSkip(skipId)
local list = XFunctionConfig.GetSkipList(skipId)
if not list then return false end
return XFunctionManager.JudgeCanOpen(list.FunctionalId)
end
function XFunctionManager.JudgeOpen(id)
--判断是否开启功能
if not XFunctionConfig.GetFuncOpenCfg(id) then
return true
end
return XPlayer.IsMark(id)
end
function XFunctionManager.GetFunctionOpenCondition(id)
--获取开启条件说明
local isOpen
local decs = ""
if not XFunctionConfig.GetFuncOpenCfg(id) then
return decs
end
-- if not XFunctionManager.IsDuringTime(id) then
-- return CS.XTextManager.GetText("FunctionNotDuringOpening")
-- end
for _, v in pairs(XFunctionConfig.GetFuncOpenCfg(id).Condition) do
if v and v ~= 0 then
isOpen, decs = XConditionManager.CheckCondition(v)
if not isOpen then
break
end
end
end
return decs
end
function XFunctionManager.JudgeCanOpen(id)
-- if not XFunctionManager.IsDuringTime(id) then
-- return false
-- end
-- 判断是否能开启
local isOpen = true
-- 如果没有配置应该返回true
if not XFunctionConfig.GetFuncOpenCfg(id) then
return true
end
for _, v in pairs(XFunctionConfig.GetFuncOpenCfg(id).Condition) do
if v and v ~= 0 then
isOpen = XConditionManager.CheckCondition(v)
if not isOpen then
break
end
end
end
return isOpen
end
--================
--检测功能是否开放
--@param functionNameId:FunctionManager.FunctionName 功能枚举ID
--@param needMark:是否需要通知后端标记功能开放
--@param noTips:是否要弹出错误提示
--================
function XFunctionManager.DetectionFunction(functionNameId, needMark, noTips)
--判断能否进入功能按钮
if not XFunctionManager.JudgeCanOpen(functionNameId) then
if not noTips then
XUiManager.TipError(XFunctionManager.GetFunctionOpenCondition(functionNameId))
end
return false
end
--后端需要使用功能开放标记时另外特殊判断并添加标记
if needMark then
if not XFunctionManager.JudgeOpen(functionNameId) then
XPlayer.ChangeMarks(functionNameId)
end
end
return true
end
local CanOpenId = {}
function XFunctionManager.CheckOpen()
--开启功能
for _, id in ipairs(XFunctionConfig.GetOpenList()) do
if not XFunctionManager.JudgeOpen(id) then
if XFunctionManager.JudgeCanOpen(id) then
XPlayer.ChangeMarks(id)
if XFunctionConfig.GetOpenHint(id) == 1 then
tableInsert(CanOpenId, id)
end
end
end
end
end
--获取功能开启提醒方式
function XFunctionManager.ShowOpenHint()
if not CanOpenId or #CanOpenId <= 0 then
return false
end
for i = 1, #CanOpenId do
if XFunctionConfig.GetOpenHint(CanOpenId[i]) == 1 then
XLuaUiManager.Open("UiHintFunctional", CanOpenId)
CanOpenId = {}
return true
end
end
return false
end
--活动跳转相关 begin
function XFunctionManager.CheckSkipActivityOpen()
local template = XFunctionConfig.GetMainActSkipCfg(1)
local stageType = template.StageType
local stageTypes = XDataCenter.FubenManager.StageType
if stageType == stageTypes.Mainline then
return XDataCenter.FubenMainLineManager.IsMainLineActivityOpen()
elseif stageType == stageTypes.ActivtityBranch then
return XDataCenter.FubenActivityBranchManager.IsOpen()
elseif stageType == stageTypes.ActivityBossSingle then
return XDataCenter.FubenActivityBossSingleManager.IsOpen()
end
return false
end
function XFunctionManager.SkipToActivity()
if not XFunctionManager.CheckSkipActivityOpen() then
return
end
local skipId = XFunctionConfig.GetMainActSkipCfg(1).SkipId
if not skipId then
return
end
XFunctionManager.SkipInterface(skipId)
end
--活动跳转相关 end
--功能时间相关 begin
local function GetTimeData(timeId)
return FunctionTimeData[timeId]
end
function XFunctionManager.IsEffectiveTimeId(timeId)
if not timeId then
return false
end
if FunctionTimeData[timeId] then
return true
else
return false
end
end
function XFunctionManager.CheckInTimeByTimeId(timeId, defaultOpen)
--未配置timeId默认未开启
if not XTool.IsNumberValid(timeId) then
return defaultOpen and true or false
end
--timeId配置错误默认未开启
local timeData = GetTimeData(timeId)
if not timeData then
return defaultOpen and true or false
end
--startTime未配置默认无开启时间限制
--endTime未配置默认无结束时间限制
return timeData:IsInTime()
end
function XFunctionManager.GetStartTimeByTimeId(timeId)
if not timeId then return end
local timeData = GetTimeData(timeId)
return timeData and timeData:GetStartTime() or 0
end
function XFunctionManager.GetEndTimeByTimeId(timeId)
if not timeId then return 0 end
local timeData = GetTimeData(timeId)
return timeData and timeData:GetEndTime() or 0
end
function XFunctionManager.GetTimeByTimeId(timeId)
return XFunctionManager.GetStartTimeByTimeId(timeId), XFunctionManager.GetEndTimeByTimeId(timeId)
end
-- 已废弃
-- function XFunctionManager.IsDuringTime(functionId)
-- local timeId = XFunctionConfig.GetFuncOpenCfg(functionId) and XFunctionConfig.GetFuncOpenCfg(functionId).TimeId
-- --未配置timeId默认开启(功能开启特殊处理)
-- if not timeId or timeId == 0 then return true end
-- return XFunctionManager.CheckInTimeByTimeId(timeId)
-- end
function XFunctionManager.BindTimeId(timeId)
if not timeId then return end
local timeData = GetTimeData(timeId)
if timeData then
timeData:CreateTimer()
end
end
--AFDeepLink特定需求
function XFunctionManager.IsAFDeepLinkCanSkipByShowTips(skipId)
local list = XFunctionConfig.GetSkipList(skipId)
if not list then
return false
end
local isCanSkip = XFunctionManager.DetectionFunction(list.FunctionalId)
if isCanSkip and not XFunctionManager.CheckSkipInDuration(skipId) then
XUiManager.TipError(CS.XTextManager.GetText("AFDeepLinkNotTime"))
return false
end
return isCanSkip
end
local function UpdateFunctionTimeData(dataList)
if not dataList then return end
for _, data in pairs(dataList) do
local timeId = data.Id
local timeData = FunctionTimeData[timeId]
if not timeData then
timeData = XFunctionTime.New(timeId)
FunctionTimeData[timeId] = timeData
end
timeData:UpdateData(data)
end
end
function XFunctionManager.InitFuncOpenTime(data)
UpdateFunctionTimeData(data)
end
XRpc.NotifyTimeLimitCtrlConfigList = function(data)
UpdateFunctionTimeData(data.TimeLimitCtrlConfigList)
XEventManager.DispatchEvent(XEventId.EVENT_ETCD_TIME_CHANGE)
end
--功能时间相关 end
XRpc.NotifyClientShieldFunction = function(data)
XFunctionManager.InitShieldFuncData(data.ShieldFunctionIds, true)
end