完成回合制整体流程

This commit is contained in:
mnjnhuang 2025-11-24 00:01:03 +08:00
parent 95cf9ff6ac
commit 8ceccbc86e
7 changed files with 117 additions and 21 deletions

View File

@ -89,7 +89,9 @@ public class TurnCardManager : MonoBehaviour
yield return tweenAnimation.WaitForCompletion();
}
handCardList.Clear();
SetCardManagerState(CardManagerStateEnum.WAIT);
TurnManagerEvent.CallTurnManagerEnterEnemyTurn();
}
}

View File

@ -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();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9be7fbec7fbad4d4b8272daf021ac8ec
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<TurnCardManager>();
characterManager = GetComponent<TurnCharacterManager>();
uiManager = GetComponent<TurnUIManager>();
TurnManagerEvent.OnTurnManagerStaySelfTurn += TurnStaySelfState;
TurnManagerEvent.OnTurnManagerEndSelfTurn += TurnEndSelfState;
TurnEnterSetupState();
enemyManager = GetComponent<TurnEnemyManager>();
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<TurnManagerStateEnum> 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>()
{ 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>() { 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>() { 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>() { 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>() { TurnManagerStateEnum.START_ENEMY_TURN })) return;
if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "结束对方回合");
turnManagerState = TurnManagerStateEnum.END_ENEMY_TURN;
uiManager.ExitEnemyTurn();
TurnManagerEnterSelfTurn(5);
}
}

View File

@ -20,6 +20,10 @@ public static class TurnManagerEvent
public static event Action OnTurnManagerEndSelfTurn;
public static void CallTurnManagerEndSelfTurn() => OnTurnManagerEndSelfTurn?.Invoke();
public static event Action<bool> 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();
}

View File

@ -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);
}

View File

@ -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