From a731fcb2b786b32dd7f0c0e184f7ba58ff44df3f Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 11 十月 2025 14:30:15 +0800
Subject: [PATCH] 0312 优化引导逻辑-存在其他遮罩界面时等待引导
---
Main/Manager/UIManager.cs | 28 ++++++++
Main/System/NewBieGuidance/NewBieCenter.cs | 129 ++++++++++++++++++++++++++++++------------
Main/Component/UI/Common/PopupWindowsProcessor.cs | 4 +
Main/System/NewBieGuidance/NewBieWin.cs | 4 +
4 files changed, 125 insertions(+), 40 deletions(-)
diff --git a/Main/Component/UI/Common/PopupWindowsProcessor.cs b/Main/Component/UI/Common/PopupWindowsProcessor.cs
index 480b430..413d3be 100644
--- a/Main/Component/UI/Common/PopupWindowsProcessor.cs
+++ b/Main/Component/UI/Common/PopupWindowsProcessor.cs
@@ -95,12 +95,16 @@
if (!UIManager.Instance.IsOpened<HomeWin>())
return;
+
if (UIManager.Instance.IsOpened(popupWindowQueue[0].window))
{
//褰撳墠妯″紡鍙互鎵撳紑澶氫釜鐩稿悓绐楀彛锛屽鍔犻槻鑼�
return;
}
+ if (UIManager.Instance.ExistAnyFullScreenOrMaskWin(popupWindowQueue[0].window))
+ return;
+
if (currentWindow.window != null)
{
//鍒ゆ柇涓婁竴涓帹閫佹槸鍚﹀叧闂�
diff --git a/Main/Manager/UIManager.cs b/Main/Manager/UIManager.cs
index b5e58a4..7fab3ba 100644
--- a/Main/Manager/UIManager.cs
+++ b/Main/Manager/UIManager.cs
@@ -317,15 +317,39 @@
public bool IsOpened(string uiName)
{
UIBase ui = GetUI(uiName);
-
+
if (null != ui)
{
return ui.IsActive();
}
-
+
return false;
}
+ // 妫�鏌ユ槸鍚﹀瓨鍦ㄤ换浣曞叏灞忔垨閬僵绐楀彛, 鏆傛湭瀹氫箟鍏ㄥ睆鍙互缁熶竴鍕鹃�塷penMask
+ public bool ExistAnyFullScreenOrMaskWin(string excludeUIName)
+ {
+ var exist = false;
+ foreach (var uiList in uiDict.Values)
+ {
+ // 閬嶅巻璇ョ被鍨嬬殑鎵�鏈塙I瀹炰緥
+ foreach (var ui in uiList)
+ {
+ // 鍒锋柊UI
+ if (ui.IsActive() && ui.name != excludeUIName)
+ {
+ if (ui.openMask)
+ {
+ exist = true;
+ break;
+ }
+ }
+ }
+ }
+
+ return exist;
+ }
+
// 鑾峰彇鎸囧畾绫诲瀷鐨勬墍鏈塙I瀹炰緥
public List<T> GetAllUI<T>() where T : UIBase
{
diff --git a/Main/System/NewBieGuidance/NewBieCenter.cs b/Main/System/NewBieGuidance/NewBieCenter.cs
index e511093..ac29f3b 100644
--- a/Main/System/NewBieGuidance/NewBieCenter.cs
+++ b/Main/System/NewBieGuidance/NewBieCenter.cs
@@ -30,12 +30,15 @@
List<int> allGuides = new List<int>();
public List<int> completeGuidesBuf = new List<int>();
+ //鍥犲叾浠栧師鍥犲鑷寸殑绛夊緟鏄剧ず鐨勫紩瀵肩獥鍙o紝鍦∣penWindow鏃朵細瑙﹀彂澶嶆煡锛屼絾鏃舵満澶櫄澧炲姞鍏抽棴鐣岄潰鏃惰Е鍙�
+ List<string> waitGuideWinNames = new List<string>();
bool inited = false;
public event Action guideStepChangeEvent;
public event Action guideBeginEvent;
public event Action<int> guideCompletedEvent;
+
public override void Init()
{
@@ -44,6 +47,7 @@
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
UIManager.Instance.OnOpenWindow += OnOpenWindow;
+ UIManager.Instance.OnCloseWindow += OnCloseWindow;
}
public override void Release()
@@ -53,6 +57,7 @@
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
UIManager.Instance.OnOpenWindow -= OnOpenWindow;
+ UIManager.Instance.OnCloseWindow -= OnCloseWindow;
}
void OnOpenWindow(UIBase _ui)
@@ -61,6 +66,22 @@
if (guides != null)
{
TryStartNewBieGuides(guides);
+ }
+ }
+
+ //鍏抽棴鍏朵粬鐣岄潰鏃跺鏌ユ湁娌¢渶瑕佺瓑寰呯殑寮曞
+ void OnCloseWindow(UIBase _ui)
+ {
+ foreach (var winName in waitGuideWinNames)
+ {
+ var guides = GuideConfig.GetGuideListByWinName(winName);
+ if (guides != null)
+ {
+ if (TryStartNewBieGuides(guides))
+ {
+ break;
+ }
+ }
}
}
@@ -78,7 +99,7 @@
var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.MissionClick);
if (guides != null)
{
- TryStartNewBieGuides(guides);
+ TryStartNewBieGuides(guides, true);
}
}
@@ -142,7 +163,8 @@
}
//鎵惧嚭鍙繘琛岀殑寮曞
- public void TryStartNewBieGuides(List<int> _guides)
+ //isOrgTrigger 鏄惁鏄師鐢熻Е鍙戯紝濡傜偣鍑荤殑鍙兘鏄師鐢熻Е鍙戯紝鍏朵粬鐨勯兘涓嶈兘
+ public bool TryStartNewBieGuides(List<int> _guides, bool isOrgTrigger = false)
{
if (!inited)
{
@@ -157,15 +179,14 @@
if (_guides == null)
{
- return;
+ return false;
}
if (currentGuide != 0)
{
- return;
+ return false;
}
- var ok = false;
for (int i = 0; i < _guides.Count; i++)
{
var guideId = _guides[i];
@@ -181,30 +202,54 @@
continue;
}
- ok = CheckGuideCondition(guideId);
- if (ok && currentGuide != guideId)
+ if (currentGuide != guideId && CheckGuideCondition(guideId, isOrgTrigger))
{
- StartNewBieGuide(guideId);
- break;
+ return StartNewBieGuide(guideId);
}
}
-
+
+ return false;
}
- public void StartNewBieGuide(int _id)
+ bool WaitGuide(int _id)
+ {
+ var config = GuideConfig.Get(_id);
+ if (UIManager.Instance.ExistAnyFullScreenOrMaskWin(config.WinName))
+ {
+ if (!waitGuideWinNames.Contains(config.WinName))
+ {
+ waitGuideWinNames.Add(config.WinName);
+ }
+ return true;
+ }
+
+
+ return false;
+ }
+
+ public bool StartNewBieGuide(int _id)
{
if (_id == 0)
{
Debug.LogError("璇锋鏌ュ紩瀵糹d = 0 鐨勬儏鍐�");
- return;
+ return false;
}
var config = GuideConfig.Get(_id);
if (config == null)
{
Debug.LogError($"娌℃湁璇ュ紩瀵糏D锛岃妫�鏌ュ紩瀵糹d = {_id} 鐨勬儏鍐�");
- return;
+ return false;
+ }
+
+ if (WaitGuide(_id))
+ {
+ return false;
+ }
+ if (waitGuideWinNames.Contains(config.WinName))
+ {
+ waitGuideWinNames.Remove(config.WinName);
}
AutoFightModel.Instance.isPause = true;
@@ -226,6 +271,7 @@
guideStepChangeEvent?.Invoke();
}
UIManager.Instance.CloseWindow<ChatWin>();
+ return true;
}
@@ -333,8 +379,8 @@
}
-
- public bool CheckGuideCondition(int _guideId)
+ //isOrgTrigger 鏄惁鏄師鐢熻Е鍙戯紝濡傜偣鍑荤殑鍙兘鏄師鐢熻Е鍙戯紝鍏朵粬鐨勯兘涓嶈兘
+ public bool CheckGuideCondition(int _guideId, bool isOrgTrigger)
{
var config = GuideConfig.Get(_guideId);
if (config == null)
@@ -342,35 +388,42 @@
return false;
}
if (!UIManager.Instance.IsOpened(config.WinName))
- {
+ {
return false;
}
switch ((GuideTriggerType)config.TriggerType)
- {
- case GuideTriggerType.None:
- return true;
- case GuideTriggerType.FunctionOpen:
- return FuncOpen.Instance.IsFuncOpen(config.Condition);
- case GuideTriggerType.Level:
- return PlayerDatas.Instance.baseData.LV >= config.Condition;
- case GuideTriggerType.OpenWindow:
- return UIManager.Instance.IsOpened(config.WinName);
- case GuideTriggerType.MainLineQuestCanDo:
- if (config.SupplementCondition == 2)
- {
- return TaskManager.Instance.mainTask.TaskID == config.Condition && TaskManager.Instance.GetMainTaskState() == 2;
- }
- return TaskManager.Instance.mainTask.TaskID == config.Condition;
- case GuideTriggerType.Map:
- return PlayerDatas.Instance.baseData.ExAttr1 >= config.Condition;
- case GuideTriggerType.MissionClick:
- return TaskManager.Instance.GetMainTaskType() == config.Condition;
- default:
- return false;
- }
+ {
+ case GuideTriggerType.None:
+ return true;
+ case GuideTriggerType.FunctionOpen:
+ return FuncOpen.Instance.IsFuncOpen(config.Condition);
+ case GuideTriggerType.Level:
+ return PlayerDatas.Instance.baseData.LV >= config.Condition;
+ case GuideTriggerType.OpenWindow:
+ return UIManager.Instance.IsOpened(config.WinName);
+ case GuideTriggerType.MainLineQuestCanDo:
+ if (config.SupplementCondition == 2)
+ {
+ return TaskManager.Instance.mainTask.TaskID == config.Condition && TaskManager.Instance.GetMainTaskState() == 2;
+ }
+ return TaskManager.Instance.mainTask.TaskID == config.Condition;
+ case GuideTriggerType.Map:
+ return PlayerDatas.Instance.baseData.ExAttr1 >= config.Condition;
+ case GuideTriggerType.MissionClick:
+ //鍙湁鐪熸鐐瑰嚮鎵嶅彲浠ヨЕ鍙�
+ if (isOrgTrigger)
+ {
+ return TaskManager.Instance.GetMainTaskType() == config.Condition && TaskManager.Instance.GetMainTaskState() != 2;
+ }
+ return false;
+ default:
+ return false;
+ }
}
+
+
public void CompleteAllGuides()
{
var send = new CA222_tagCMSetGuideOK();
diff --git a/Main/System/NewBieGuidance/NewBieWin.cs b/Main/System/NewBieGuidance/NewBieWin.cs
index 19c9656..8f1533b 100644
--- a/Main/System/NewBieGuidance/NewBieWin.cs
+++ b/Main/System/NewBieGuidance/NewBieWin.cs
@@ -249,6 +249,10 @@
{
if (Input.GetMouseButtonUp(0))
{
+ if (stepConfig == null)
+ {
+ return;
+ }
if (stepConfig.clickAnyWhereComplete || m_NewBieMask.mask.IsInCirleArea(Input.mousePosition, CameraManager.uiCamera))
{
if (m_ClickTarget == null)
--
Gitblit v1.8.0