forked from endernon/PGRData
202 lines
No EOL
9.2 KiB
Lua
202 lines
No EOL
9.2 KiB
Lua
XFunctionEventManagerCreator = function()
|
|
local InMainUi = false
|
|
local FunctionEvenState = {
|
|
IDLE = 1,
|
|
PLAYING = 2,
|
|
LOCK = 3
|
|
}
|
|
local DisableFunction = false --功能屏蔽标记(调试模式时使用)
|
|
local FunctionState = FunctionEvenState.IDLE
|
|
|
|
local XFunctionEventManager = {}
|
|
|
|
function XFunctionEventManager.Init()
|
|
XEventManager.AddEventListener(XEventId.EVENT_LOGIN_SUCCESS, function()
|
|
XEventManager.AddEventListener(XEventId.EVENT_PLAYER_LEVEL_CHANGE, XFunctionEventManager.HandlerPlayerLevelChange)
|
|
XEventManager.AddEventListener(XEventId.EVENT_FIGHT_RESULT_WIN, XFunctionEventManager.HandlerFightResult)
|
|
XEventManager.AddEventListener(XEventId.EVENT_FUNCTION_EVENT_START, XFunctionEventManager.OnFunctionEventStart)
|
|
XEventManager.AddEventListener(XEventId.EVENT_MEDAL_TIPSOVER, XFunctionEventManager.OnMedalTipsCompleted)
|
|
XEventManager.AddEventListener(XEventId.EVENT_FUNCTION_EVENT_COMPLETE, XFunctionEventManager.OnFunctionEventCompleted)
|
|
XEventManager.AddEventListener(XEventId.EVENT_PLAYER_LEVEL_UP_ANIMATION_END, XFunctionEventManager.OnLevelUpAnimationEnd)
|
|
XEventManager.AddEventListener(XEventId.EVENT_TASKFORCE_TIP_MISSION_END, XFunctionEventManager.OnTipMissionEnd)
|
|
XEventManager.AddEventListener(XEventId.EVENT_AUTO_WINDOW_STOP, XFunctionEventManager.OnFunctionEventBreak)
|
|
XEventManager.AddEventListener(XEventId.EVENT_MAINUI_ENABLE, XFunctionEventManager.OnBackToMain)
|
|
XEventManager.AddEventListener(XEventId.EVENT_ARENA_RESULT_CLOSE, XFunctionEventManager.UnLockFunctionEvent)
|
|
XEventManager.AddEventListener(XEventId.EVENT_SCORETITLE_NEW, XFunctionEventManager.GetNewCollection)
|
|
XEventManager.AddEventListener(XEventId.EVENT_AUTO_WINDOW_END, XFunctionEventManager.OnHitFaceEnd)
|
|
XEventManager.AddEventListener(XEventId.EVENT_MENTOR_AUTO_GRADUATE, XFunctionEventManager.HandlerAutoGraduate)
|
|
XEventManager.AddEventListener(XEventId.EVENT_PLAYER_UNLOCK_BIRTHDAY_STORY, XFunctionEventManager.UnLockBirthdayStory)
|
|
XEventManager.AddEventListener(XEventId.EVENT_REVIEW_ACTIVITY_HIT_FACE_END, XFunctionEventManager.OnReviewEnd)
|
|
end)
|
|
DisableFunction = XFunctionEventManager.CheckFuncDisable()
|
|
end
|
|
|
|
--处理战斗结算
|
|
function XFunctionEventManager.HandlerFightResult()
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--处理等级提升
|
|
function XFunctionEventManager.HandlerPlayerLevelChange()
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--处理自动毕业
|
|
function XFunctionEventManager.HandlerAutoGraduate()
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
function XFunctionEventManager.OnFunctionEventValueChange()
|
|
--第一次进入主界面并播放完成首次进入动画后在响应对应的方法
|
|
if not XLoginManager.IsStartGuide() then
|
|
return
|
|
end
|
|
|
|
XFunctionManager.CheckOpen()
|
|
|
|
if FunctionState ~= FunctionEvenState.IDLE or DisableFunction then
|
|
return
|
|
end
|
|
|
|
XDataCenter.CommunicationManager.SetCommunication()
|
|
XDataCenter.CommunicationManager.SetFestivalCommunication()
|
|
-- 当前是否在主界面(同时在最上层,避免像三周年签到自动弹窗界面 场景预览 双开UiMain)
|
|
InMainUi = XLuaUiManager.IsUiShow("UiMain") and XLuaUiManager.GetTopUiName() == "UiMain"
|
|
if XDeeplinkManager.InvokeDeeplink() then
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XLoginManager.CheckLimitLogin() then --登录限制(答题)
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XPlayer.HandlerPlayLevelUpAnimation() then --玩家等级提升
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.MentorSystemManager.CheckHaveGraduateReward() then --学员毕业
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.FubenManager.CheckHasNewHideStage() then --隐藏关卡开启
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.TaskForceManager.HandlerPlayTipMission() then --任务提示
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.ArenaManager.CheckOpenArenaActivityResult() then -- 竞技结算
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.MedalManager.ShowUnlockTips() then --勋章飘窗
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif InMainUi and XDataCenter.GuildBossManager.CheckShowTip() then -- 公会boss击败
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif InMainUi and XDataCenter.GuildManager.CheckGuildLevelUp() then -- 公会等级提升
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.CommunicationManager.ShowNextCommunication(XDataCenter.CommunicationManager.Type.Medal) then --勋章通讯
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.CommunicationManager.ShowNextCommunication(XDataCenter.CommunicationManager.Type.Normal) then --通常通讯
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XFunctionManager.ShowOpenHint() then --系统开放
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.GuideManager.CheckGuideOpen() then -- 引导
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif InMainUi and XDataCenter.CommunicationManager.ShowFestivalCommunication() then --节日通讯
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif InMainUi and XDataCenter.AutoWindowManager.CheckAutoWindow() then -- 打脸
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.MedalManager.CheckCanGetNewCollection() then -- 获得收藏品
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif XDataCenter.CommunicationManager.ShowBirthdayStory() then -- 生日通讯
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
elseif InMainUi and XDataCenter.ReviewActivityManager.AutoOpenReview() then -- 回顾活动
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
end
|
|
|
|
if FunctionState ~= FunctionEvenState.PLAYING then
|
|
XEventManager.DispatchEvent(XEventId.EVENT_FUNCTION_EVENT_END)
|
|
end
|
|
end
|
|
|
|
-- 交互开始
|
|
function XFunctionEventManager.OnFunctionEventStart()
|
|
FunctionState = FunctionEvenState.PLAYING
|
|
end
|
|
|
|
-- 交互完成
|
|
function XFunctionEventManager.OnFunctionEventCompleted()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--回到主界面
|
|
function XFunctionEventManager.OnBackToMain()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--飘窗结束
|
|
function XFunctionEventManager.OnMedalTipsCompleted()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
-- 打脸中断
|
|
function XFunctionEventManager.OnFunctionEventBreak()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
end
|
|
|
|
-- 打脸结束
|
|
function XFunctionEventManager.OnHitFaceEnd()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
-- if XDataCenter.GuideManager.CheckGuideOpen() then
|
|
-- FunctionState = FunctionEvenState.PLAYING
|
|
-- end
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
function XFunctionEventManager.OnReviewEnd()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
--完成
|
|
function XFunctionEventManager.OnLevelUpAnimationEnd()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
-- 派遣队伍提升
|
|
function XFunctionEventManager.OnTipMissionEnd()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--锁
|
|
function XFunctionEventManager.LockFunctionEvent()
|
|
FunctionState = FunctionEvenState.LOCK
|
|
end
|
|
|
|
--解锁
|
|
function XFunctionEventManager.UnLockFunctionEvent()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--获得收藏品
|
|
function XFunctionEventManager.GetNewCollection()
|
|
--FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
--解锁生日剧情
|
|
function XFunctionEventManager.UnLockBirthdayStory()
|
|
FunctionState = FunctionEvenState.IDLE
|
|
XFunctionEventManager.OnFunctionEventValueChange()
|
|
end
|
|
|
|
function XFunctionEventManager.IsPlaying()
|
|
return FunctionState == FunctionEvenState.PLAYING
|
|
end
|
|
|
|
--检测功能开关
|
|
function XFunctionEventManager.CheckFuncDisable()
|
|
return XMain.IsDebug and XSaveTool.GetData(XPrefs.FunctionEventTrigger)
|
|
end
|
|
|
|
function XFunctionEventManager.ChangeFuncDisable(state)
|
|
DisableFunction = state
|
|
XSaveTool.SaveData(XPrefs.FunctionEventTrigger, DisableFunction)
|
|
end
|
|
|
|
XFunctionEventManager.Init()
|
|
return XFunctionEventManager
|
|
end |