From 8ceccbc86e044cbf6dbb852ade37bd5f35d1559b Mon Sep 17 00:00:00 2001 From: mnjnhuang <1090031856@qq.com> Date: Mon, 24 Nov 2025 00:01:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9B=9E=E5=90=88=E5=88=B6?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Events/TurnScripts/TurnCardManager.cs | 2 + .../Events/TurnScripts/TurnEnemyManager.cs | 25 ++++++ .../TurnScripts/TurnEnemyManager.cs.meta | 11 +++ .../Events/TurnScripts/TurnManager.cs | 77 ++++++++++++++----- .../Events/TurnScripts/TurnManagerEvent.cs | 8 +- .../Events/TurnScripts/TurnUIManager.cs | 2 + Assets/Scenes/FightScene.unity | 13 ++++ 7 files changed, 117 insertions(+), 21 deletions(-) create mode 100644 Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs create mode 100644 Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs.meta diff --git a/Assets/00_scripts/Events/TurnScripts/TurnCardManager.cs b/Assets/00_scripts/Events/TurnScripts/TurnCardManager.cs index 6b46770..c89c876 100644 --- a/Assets/00_scripts/Events/TurnScripts/TurnCardManager.cs +++ b/Assets/00_scripts/Events/TurnScripts/TurnCardManager.cs @@ -89,7 +89,9 @@ public class TurnCardManager : MonoBehaviour yield return tweenAnimation.WaitForCompletion(); } + handCardList.Clear(); SetCardManagerState(CardManagerStateEnum.WAIT); + TurnManagerEvent.CallTurnManagerEnterEnemyTurn(); } } diff --git a/Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs b/Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs new file mode 100644 index 0000000..0f7a211 --- /dev/null +++ b/Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TurnEnemyManager : MonoBehaviour +{ + public void SetupEnemyManager() + { + } + + public void SetDebugEnemyTurn() + { + StartCoroutine(enumerator()); + + IEnumerator enumerator() + { + for (var i = 0; i <= 3; i++) + { + yield return new WaitForSeconds(1); + } + + TurnManagerEvent.CallTurnManagerExitEnemyTurn(); + } + } +} \ No newline at end of file diff --git a/Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs.meta b/Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs.meta new file mode 100644 index 0000000..d9e24fd --- /dev/null +++ b/Assets/00_scripts/Events/TurnScripts/TurnEnemyManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9be7fbec7fbad4d4b8272daf021ac8ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/00_scripts/Events/TurnScripts/TurnManager.cs b/Assets/00_scripts/Events/TurnScripts/TurnManager.cs index 20b8b3b..c850554 100644 --- a/Assets/00_scripts/Events/TurnScripts/TurnManager.cs +++ b/Assets/00_scripts/Events/TurnScripts/TurnManager.cs @@ -25,15 +25,17 @@ public class TurnManager : MonoBehaviour private TurnCharacterManager characterManager; private TurnCardManager cardManager; private TurnUIManager uiManager; + private TurnEnemyManager enemyManager; public enum TurnManagerStateEnum { WAIT = 0, SETUP_STATE = 1, - SELF_STATE_START = 2, - SELF_STATE_STAY = 3, - SELF_STATE_END = 4, - ENEMY_STATE_START, + START_SELF_TURN = 2, + STAY_SELF_TURN = 3, + END_SELF_TURN = 4, + START_ENEMY_TURN = 5, + END_ENEMY_TURN = 6 } private void Start() @@ -42,14 +44,17 @@ public class TurnManager : MonoBehaviour cardManager = GetComponent(); characterManager = GetComponent(); uiManager = GetComponent(); - TurnManagerEvent.OnTurnManagerStaySelfTurn += TurnStaySelfState; - TurnManagerEvent.OnTurnManagerEndSelfTurn += TurnEndSelfState; - TurnEnterSetupState(); + enemyManager = GetComponent(); + TurnManagerEvent.OnTurnManagerStaySelfTurn += TurnManagerStaySelfTurn; + TurnManagerEvent.OnTurnManagerEndSelfTurn += TurnManagerEndSelfTurn; + TurnManagerEvent.OnTurnManagerEnterEnemyTurn += TurnManagerEnterEnemyTurn; + TurnManagerEvent.OnTurnManagerExitEnemyTurn += TurnManagerEndEnemyTurn; + SetupTurnManager(); } public TurnManagerStateEnum GetTurnManagerState() => turnManagerState; - private void TurnEnterSetupState() // 进入设置状态 + private void SetupTurnManager() // 进入设置状态 { turnManagerState = TurnManagerStateEnum.SETUP_STATE; if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "进入设置状态"); @@ -59,7 +64,7 @@ public class TurnManager : MonoBehaviour cardDeckList = characterManager.RenderCharacterSpriteReturnCardList(); cardManager.SetupCardManager(cardDealDuration, cardHandContainer, cardDragDuration, dropCardUI, cardDropDuration); // cardManager.PlayAnimationShuffleCardToDeck(cardDealDuration); - TurnEnterSelfState(); + TurnManagerEnterSelfTurn(6); } public Card TakeOutOneCard() @@ -71,27 +76,61 @@ public class TurnManager : MonoBehaviour public void DropOutOneCard(Card card) => cardPileList.Add(card); - private void TurnEnterSelfState() // 进入我方回合 + private bool GetNowTurnManagerIsTargetState(List targetStateList) { - if (!turnManagerSingleton.CompareManagerState(TurnManagerStateEnum.SETUP_STATE)) return; + if (targetStateList.Contains(GetTurnManagerState())) return true; + string errorMsg = ""; + if (targetStateList.Count == 1) + errorMsg = $"[TurnManager][Error]: State Is [{GetTurnManagerState()}], Target Is [{targetStateList[0]}]"; + if (targetStateList.Count == 2) + errorMsg = $"[TurnManager][Error]: State Is [{GetTurnManagerState()}], Target Is [{targetStateList[0]}, {targetStateList[1]}]"; + if (errorMsg != "") Debug.LogError(errorMsg); + return false; + } + + + private void TurnManagerEnterSelfTurn(int cardNumber = 0) // 进入我方回合 + { + if (!GetNowTurnManagerIsTargetState(new List() + { TurnManagerStateEnum.SETUP_STATE, TurnManagerStateEnum.END_ENEMY_TURN })) return; if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "进入我方回合"); - turnManagerState = TurnManagerStateEnum.SELF_STATE_START; - cardManager.TakeCard(6); + turnManagerState = TurnManagerStateEnum.START_SELF_TURN; + cardManager.TakeCard(cardNumber); } - private void TurnStaySelfState() // 停留我方回合 + private void TurnManagerStaySelfTurn() // 停留我方回合 { - if (!turnManagerSingleton.CompareManagerState(TurnManagerStateEnum.SELF_STATE_START)) return; + if (!GetNowTurnManagerIsTargetState(new List() { TurnManagerStateEnum.START_SELF_TURN })) return; if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "停留我方回合"); - turnManagerState = TurnManagerStateEnum.SELF_STATE_STAY; + turnManagerState = TurnManagerStateEnum.STAY_SELF_TURN; } - private void TurnEndSelfState() // 结束我方回合 + private void TurnManagerEndSelfTurn() // 结束我方回合 { - if (!turnManagerSingleton.CompareManagerState(TurnManagerStateEnum.SELF_STATE_STAY)) return; + if (!GetNowTurnManagerIsTargetState(new List() { TurnManagerStateEnum.STAY_SELF_TURN })) return; if (!cardManager.GetCardManagerStateIsWait()) return; if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "结束我方回合"); - turnManagerState = TurnManagerStateEnum.SELF_STATE_END; + turnManagerState = TurnManagerStateEnum.END_SELF_TURN; cardManager.DropCardAllFromHand(); } + + + private void TurnManagerEnterEnemyTurn() // 进入对方回合 + { + if (!GetNowTurnManagerIsTargetState(new List() { TurnManagerStateEnum.END_SELF_TURN })) return; + if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "进入对方回合"); + turnManagerState = TurnManagerStateEnum.START_ENEMY_TURN; + uiManager.EnterEnemyTurn(); + enemyManager.SetupEnemyManager(); + enemyManager.SetDebugEnemyTurn(); + } + + private void TurnManagerEndEnemyTurn() // 结束对方回合 + { + if (!GetNowTurnManagerIsTargetState(new List() { TurnManagerStateEnum.START_ENEMY_TURN })) return; + if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "结束对方回合"); + turnManagerState = TurnManagerStateEnum.END_ENEMY_TURN; + uiManager.ExitEnemyTurn(); + TurnManagerEnterSelfTurn(5); + } } \ No newline at end of file diff --git a/Assets/00_scripts/Events/TurnScripts/TurnManagerEvent.cs b/Assets/00_scripts/Events/TurnScripts/TurnManagerEvent.cs index 829f313..fc4e6e6 100644 --- a/Assets/00_scripts/Events/TurnScripts/TurnManagerEvent.cs +++ b/Assets/00_scripts/Events/TurnScripts/TurnManagerEvent.cs @@ -20,6 +20,10 @@ public static class TurnManagerEvent public static event Action OnTurnManagerEndSelfTurn; public static void CallTurnManagerEndSelfTurn() => OnTurnManagerEndSelfTurn?.Invoke(); - public static event Action OnCardManagerSetStateToDrag; - public static void CallCardManagerSetStateToDrag(bool isSet) => OnCardManagerSetStateToDrag?.Invoke(isSet); + + public static event Action OnTurnManagerEnterEnemyTurn; + public static void CallTurnManagerEnterEnemyTurn() => OnTurnManagerEnterEnemyTurn?.Invoke(); + + public static event Action OnTurnManagerExitEnemyTurn; + public static void CallTurnManagerExitEnemyTurn() => OnTurnManagerExitEnemyTurn?.Invoke(); } \ No newline at end of file diff --git a/Assets/00_scripts/Events/TurnScripts/TurnUIManager.cs b/Assets/00_scripts/Events/TurnScripts/TurnUIManager.cs index 6cee605..0ddd2ff 100644 --- a/Assets/00_scripts/Events/TurnScripts/TurnUIManager.cs +++ b/Assets/00_scripts/Events/TurnScripts/TurnUIManager.cs @@ -9,4 +9,6 @@ public class TurnUIManager : MonoBehaviour public void OnButtonDownEndTurn() => TurnManagerEvent.CallTurnManagerEndSelfTurn(); public void EnterEnemyTurn() => inEnemyTurnTooltip.gameObject.SetActive(true); + + public void ExitEnemyTurn() => inEnemyTurnTooltip.gameObject.SetActive(false); } \ No newline at end of file diff --git a/Assets/Scenes/FightScene.unity b/Assets/Scenes/FightScene.unity index c507f05..127822f 100644 --- a/Assets/Scenes/FightScene.unity +++ b/Assets/Scenes/FightScene.unity @@ -867,6 +867,7 @@ GameObject: - component: {fileID: 526573212} - component: {fileID: 526573213} - component: {fileID: 526573214} + - component: {fileID: 526573215} m_Layer: 0 m_Name: TurnManager m_TagString: Untagged @@ -972,6 +973,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: inEnemyTurnTooltip: {fileID: 588735212} +--- !u!114 &526573215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526573204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9be7fbec7fbad4d4b8272daf021ac8ec, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &563549357 GameObject: m_ObjectHideFlags: 0