using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; using UnityEngine; public class TurnManager : MonoBehaviour { // ======== serializeField ======== [SerializeField] private List playerCharacterGo; // 玩家队伍列表(应该传入5个角色), 暂时只传3个 [SerializeField] private int defaultHandCardNumber = 5; // 默认手牌数量 [SerializeField] private float cardDistributeDuration = 0.25f; // 系统发牌动画时间 [SerializeField] private float cardDragDuration = 0.25f; // 每张卡牌拖拽动画时间 [SerializeField] private float cardDiscardDuration = 0.25f; // 系统弃牌动画时间 // ======== private ======== private TurnManagerSingleton turnManagerSingleton; [SerializeField] private List cardDeckList; // 牌组 private readonly List cardPileList = new(); // 弃牌堆 private TurnManagerStateEnum turnManagerState; // 状态机 private CharacterManager characterManager; private CardManager cardManager; public enum TurnManagerStateEnum { WAIT = 0, SETUP_STATE = 1, SELF_STATE_START = 2, ENEMY_STATE_START = 3, } private void Start() { turnManagerSingleton = TurnManagerSingleton.Instance; characterManager = GetComponent(); cardManager = GetComponent(); TurnEnterSetupState(); } public TurnManagerStateEnum GetTurnManagerState() => turnManagerState; private void TurnEnterSetupState() // 进入设置状态 { turnManagerState = TurnManagerStateEnum.SETUP_STATE; if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "进入设置状态"); cardDeckList?.Clear(); cardPileList?.Clear(); // foreach (var playerCharacter in playerCharacterList) playerCharacter.SetID(playerCharacterList.IndexOf(playerCharacter)); characterManager.SetupCharacterManager(playerCharacterGo); characterManager.MathWorldPositionPoint(); var (characterOwnedCardTweenList, cardDeck) = characterManager.RenderCharacterSpriteReturnCardTween(); cardDeckList = cardDeck; cardManager.SetupCardManager(); cardManager.ShuffleCardToDeck(characterOwnedCardTweenList); // TurnEnterSelfState(); } private void TurnEnterSelfState() // 我方回合状态 { // if (!turnManagerSingleton.CompareManagerState(TurnManagerStateEnum.SETUP_STATE)) return; // turnManagerState = TurnManagerStateEnum.SELF_STATE_START; // if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "进入我方回合"); // cardManager.SetupBaseMessage(new CardManager.AnimationMessage // { // MOVE_ANIMATION_DURATION = cardDistributeDuration, // DRAG_ANIMATION_DURATION = cardDragDuration, // }); // // Card takeOutCard = cardManager.DealOneCard(cardDeckList); // cardDeckList.Remove(takeOutCard); } }