diff --git a/Assets/ManagedResources/~Lua/Logic/GameEvent.lua b/Assets/ManagedResources/~Lua/Logic/GameEvent.lua index 6b73d7ea79..ef09d74ca1 100644 --- a/Assets/ManagedResources/~Lua/Logic/GameEvent.lua +++ b/Assets/ManagedResources/~Lua/Logic/GameEvent.lua @@ -27,6 +27,7 @@ GameEvent = { GuidePanelScrollViewPos = "Guide.GuidePanelScrollViewPos", BattleGuideDone = "Guide.BattleGuideDone", + FuncGuideDone = "Guide.FuncGuideDone", }, Player = { --金币数量改变 diff --git a/Assets/ManagedResources/~Lua/Modules/Fight/FightPointPassMainPanel.lua b/Assets/ManagedResources/~Lua/Modules/Fight/FightPointPassMainPanel.lua index 697f6103c1..9931c5570c 100644 --- a/Assets/ManagedResources/~Lua/Modules/Fight/FightPointPassMainPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/Fight/FightPointPassMainPanel.lua @@ -694,8 +694,10 @@ function this.ExcuteBattle() PopupTipPanel.ShowTip(tip) return end - - this.SetInitAnim() + -- 检测是否有前置引导 + GuideManager.BeforeFightCheck(curFightId, function() + this.SetInitAnim() + end) end diff --git a/Assets/ManagedResources/~Lua/Modules/Guide/GuideManager.lua b/Assets/ManagedResources/~Lua/Modules/Guide/GuideManager.lua index 22b33ad1bc..d6c0e66dbf 100644 --- a/Assets/ManagedResources/~Lua/Modules/Guide/GuideManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Guide/GuideManager.lua @@ -118,10 +118,48 @@ function this.OnFightPass(fightId) if not guideId or guideId == 0 then return end - -- if not funcDic[guideId] then - table.insert(_FuncGuideList, guideId) - -- end + if funcDic[guideId] then + -- funcDic[guideId] = nil + return + end -- + table.insert(_FuncGuideList, guideId) + this.CheckFuncGuide() +end +-- 通过关卡时判断 +function this.BeforeFightCheck(fightId, func) + -- 引导完成 + local function OnFuncGuideDone() + if func then + func() + end + Game.GlobalEvent:RemoveEvent(GameEvent.Guide.FuncGuideDone, OnFuncGuideDone) + end + Game.GlobalEvent:AddEvent(GameEvent.Guide.FuncGuideDone, OnFuncGuideDone) + -- 正确性检测 + if not fightId then + OnFuncGuideDone() + return + end + -- 是否开启引导 + if not AppConst.isGuide then + OnFuncGuideDone() + return + end + -- 判断是否需要引导 + local guideId = MainLevelConfig[fightId].BeforeGuideId + if not guideId or guideId == 0 then + OnFuncGuideDone() + return + end + -- 引导过了 + if funcDic[guideId] then + -- funcDic[guideId] = nil + OnFuncGuideDone() + return + end + -- 功能引导检测 + table.insert(_FuncGuideList, guideId) this.CheckFuncGuide() end @@ -182,6 +220,8 @@ function GuideManager.CheckFuncGuide() GuideManager.ShowGuide(guideId) end table.remove(_FuncGuideList, 1) + else + Game.GlobalEvent:DispatchEvent(GameEvent.Guide.FuncGuideDone) end end