diff --git a/Forest/Assets/Scripts/Framework/GameBuild/BuildBoot.cs b/Forest/Assets/Scripts/Framework/GameBuild/BuildBoot.cs
index fd6bd7d..54103d2 100644
--- a/Forest/Assets/Scripts/Framework/GameBuild/BuildBoot.cs
+++ b/Forest/Assets/Scripts/Framework/GameBuild/BuildBoot.cs
@@ -327,7 +327,7 @@ public class BuildBoot : MonoBehaviour
? CurCondition
: BuildManager.Instance.ReachCondition;
- var nextLockNode = BuildManager.Instance.GetNextLockNode(CurCondition);
+ var nextLockNode = BuildManager.Instance.GetNextLockNode();
if (string.IsNullOrEmpty(nextLockNode))
{
foreach (var chooseNode in chooseNodeInfo)
@@ -429,7 +429,6 @@ public class BuildBoot : MonoBehaviour
///
private void InitUI()
{
- //选择时UI
var otherRoot = GameObject.Find("OtherRoot").gameObject;
_mask = otherRoot.transform.Find("Mask").gameObject;
_pickItem = GameObject.Find("OtherRoot/PickItem").gameObject;
@@ -472,6 +471,7 @@ public class BuildBoot : MonoBehaviour
private void CloseTipPanel()
{
_tipObj.SetActive(false);
+ BuildManager.Instance.PlaySound();
}
///
@@ -485,6 +485,7 @@ public class BuildBoot : MonoBehaviour
GameStateManager.Instance.ChangeState(new LevelState(levelID));
EventManager.Instance.Send(EventManager.EventName.EnterGame);
}
+ BuildManager.Instance.PlaySound();
}
///
@@ -492,6 +493,7 @@ public class BuildBoot : MonoBehaviour
///
private void CloseBar()
{
+ BuildManager.Instance.PlaySound();
_isChanging = false;
_buildBar.Close();
_mask.SetActive(false);
@@ -513,6 +515,7 @@ public class BuildBoot : MonoBehaviour
///
private void YesBar()
{
+ BuildManager.Instance.PlaySound();
_isChanging = false;
_mask.SetActive(false);
_pickItem.SetActive(false);
@@ -566,7 +569,7 @@ public class BuildBoot : MonoBehaviour
var optionObj = obj.transform.parent.gameObject;
var nodeName = optionObj.transform.parent.name;
var optionName = optionObj.name;
-
+ BuildManager.Instance.PlaySound();
if (_nodes.TryGetValue(nodeName, out var node))
{
_curNode = node;
@@ -585,17 +588,6 @@ public class BuildBoot : MonoBehaviour
}
}
- ///
- /// 描边展示
- ///
- private void OutlinePickItem(Option option)
- {
- _pickItem.SetActive(true);
- _pickItem.transform.position = option.OptionObj.transform.position;
- _pickSpriteRenderer.sprite =
- option.NormalObj.GetComponent().sprite;
- }
-
///
/// 泡泡点击
///
@@ -608,7 +600,7 @@ public class BuildBoot : MonoBehaviour
obj.SetActive(false);
var nodeName = obj.transform.parent.name;
EventManager.Instance.Send(EventManager.EventName.HideMainUI);
-
+ BuildManager.Instance.PlaySound();
if (_nodes.TryGetValue(nodeName, out var node))
{
var condition = BuildManager.Instance.GetCondition(nodeName);
@@ -642,7 +634,7 @@ public class BuildBoot : MonoBehaviour
}
_newOption = option;
-
+ BuildManager.Instance.PlaySound();
OutlinePickItem(option);
//DebugUtil.LogError("点击了{0}节点的{1}选项", nodeName, option.OptionObj.name);
@@ -655,9 +647,29 @@ public class BuildBoot : MonoBehaviour
{
_mask.SetActive(true);
_tipObj.SetActive(true);
+ BuildManager.Instance.PlaySound();
EventManager.Instance.Send(EventManager.EventName.OpenUI);
}
+ ///
+ /// 描边展示
+ ///
+ private void OutlinePickItem(Option option)
+ {
+ _pickItem.SetActive(true);
+ _pickItem.transform.position = option.OptionObj.transform.position;
+ _pickSpriteRenderer.sprite =
+ option.NormalObj.GetComponent().sprite;
+ }
+
+ private void UpdateReachCondition()
+ {
+ //TODO 不同类型的条件
+ CurCondition = LevelSelectManager.Instance.CurPassLevelIndex;
+
+ BuildManager.Instance.UpdateReachCondition(CurCondition);
+ }
+
#endregion
private void RegisterEvent()
@@ -666,6 +678,7 @@ public class BuildBoot : MonoBehaviour
InputManager.Instance.OnBuildBubbleClick += OnBuildBubbleClick;
EventManager.Instance.Register(EventManager.EventName.HideBuildUI, HideUI);
EventManager.Instance.Register(EventManager.EventName.ShowBuildUI, ShowUI);
+ EventManager.Instance.Register(EventManager.EventName.RefreshGameData, UpdateReachCondition);
}
private void UnregisterClickEvent()
@@ -678,5 +691,6 @@ public class BuildBoot : MonoBehaviour
EventManager.Instance.Unregister(EventManager.EventName.HideBuildUI, HideUI);
EventManager.Instance.Unregister(EventManager.EventName.ShowBuildUI, ShowUI);
+ EventManager.Instance.Unregister(EventManager.EventName.RefreshGameData, UpdateReachCondition);
}
}
\ No newline at end of file
diff --git a/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs b/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs
index b5cd764..d569cdf 100644
--- a/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs
+++ b/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs
@@ -189,6 +189,7 @@ namespace Framework.Manager
//Build场景相机
public Camera CurBuildCamera;
+
private BuildData _curBuildData;
private bool _isInit;
private bool _isInGame;
@@ -205,6 +206,7 @@ namespace Framework.Manager
InitCondition();
await InitIcon();
InitBlueprint();
+ _isInGame = inGame;
if (inGame)
CurBuildCamera = CameraManager.Instance.UICamera;
_isInit = true;
@@ -451,8 +453,10 @@ namespace Framework.Manager
StorageManager.Instance.SaveWithoutUpdate();
}
-
- public string GetNextLockNode(int condition)
+ ///
+ /// 获取下一个解锁节点
+ ///
+ public string GetNextLockNode()
{
string nodeName = null;
@@ -475,9 +479,9 @@ namespace Framework.Manager
}
var firstNode = NodeInfos
- .OrderBy(kv => kv.Value.Condition)
+ .OrderBy(kv => kv.Value.Condition)
.FirstOrDefault();
-
+
return firstNode.Key;
}
//TODO 按主题解锁
@@ -499,12 +503,25 @@ namespace Framework.Manager
_reachCondition = condition;
}
+ ///
+ /// 更新本地节点选择
+ ///
public void SetBuildUserInfo(int guideGroupID)
{
_userBuildInfo.GuideGroup = guideGroupID;
StorageManager.Instance.SyncForce = true;
}
+ ///
+ /// 播放音效
+ ///
+ public void PlaySound()
+ {
+ if (_isInGame)
+ AudioManager.Instance.PlaySound(AudioType.SOUND, "S_Btn",
+ new UnityAudio(false));
+ }
+
///
/// Debug 清楚玩家所有选择
///
diff --git a/Forest/Assets/Scripts/Gameplay/LoadingExecutor/GameStartLoadingExecutor.cs b/Forest/Assets/Scripts/Gameplay/LoadingExecutor/GameStartLoadingExecutor.cs
index 05a0db2..fc1afd7 100644
--- a/Forest/Assets/Scripts/Gameplay/LoadingExecutor/GameStartLoadingExecutor.cs
+++ b/Forest/Assets/Scripts/Gameplay/LoadingExecutor/GameStartLoadingExecutor.cs
@@ -63,11 +63,12 @@ namespace Gameplay.LoadingExecutor
}
//判断是否开启新手引导
- if (!GuideMananger.Instance.IsGuiding && buildInfo.GuideGroup <= 0)
+ if (!GuideMananger.Instance.IsGuiding && buildInfo.GuideGroup <= 0 &&
+ LevelSelectManager.Instance.CurPassLevelIndex < 1)
{
buildInfo.ChooseNodeInfo = new Dictionary();
GuideMananger.Instance.NeedGuide = true;
- DebugUtil.LogG("开启新手引导!");
+ DebugUtil.LogG("需要开启新手引导!");
}
var buildId = buildInfo.BuildData;
diff --git a/Forest/Assets/Scripts/Gameplay/UI/Other/UILoginPanelController.cs b/Forest/Assets/Scripts/Gameplay/UI/Other/UILoginPanelController.cs
index e32b930..2c13bf1 100644
--- a/Forest/Assets/Scripts/Gameplay/UI/Other/UILoginPanelController.cs
+++ b/Forest/Assets/Scripts/Gameplay/UI/Other/UILoginPanelController.cs
@@ -5,10 +5,10 @@ using Framework.BI;
using UnityEngine.UI;
using Gameplay.Login;
using Framework.Event;
+using Gameplay.Manager;
using Framework.Manager;
using Framework.Constants;
using Event = cfg.BI.Event;
-using System;
public class UILoginPanelController : UIWindow
{
@@ -37,7 +37,7 @@ public class UILoginPanelController : UIWindow
#endif
ChangeLanguage();
}
-
+
protected override void OnOpenWindow(object data)
{
BIManager.Instance.TrackEvent(Event.show_login);
@@ -121,11 +121,12 @@ public class UILoginPanelController : UIWindow
}
else if (!_needHideGfx)
{
- GuideMananger.Instance.StartGroupGuide();
+ if (LevelSelectManager.Instance.CurPassLevelIndex < 1)
+ GuideMananger.Instance.StartGroupGuide();
EventManager.Instance.Send(EventManager.EventName.ShowGfx);
}
}
-
+
private void OnDestroy()
{
EventManager.Instance.Unregister(EventManager.EventName.LoginFail, LoginFail);
diff --git a/Forest/Assets/Scripts/Gameplay/UI/Other/UISyncTipController.cs b/Forest/Assets/Scripts/Gameplay/UI/Other/UISyncTipController.cs
index ced7b3b..e2f6022 100644
--- a/Forest/Assets/Scripts/Gameplay/UI/Other/UISyncTipController.cs
+++ b/Forest/Assets/Scripts/Gameplay/UI/Other/UISyncTipController.cs
@@ -1,3 +1,4 @@
+using Gameplay.Manager;
using Framework.Event;
using UnityEngine.UI;
using Framework.BI;
@@ -31,7 +32,11 @@ public class UISyncTipController : UIWindow
private void CloseUI()
{
CloseWindow(true);
- GuideMananger.Instance.StartGroupGuide();
+ if (LevelSelectManager.Instance.CurPassLevelIndex < 1)
+ {
+ DebugUtil.LogG("开启新手引导!");
+ GuideMananger.Instance.StartGroupGuide();
+ }
if (!_needHideGfx)
EventManager.Instance.Send(EventManager.EventName.ShowGfx);
}