72 lines
3.1 KiB
C#
Raw Normal View History

2025-11-20 14:44:09 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
2025-11-21 20:16:36 +08:00
using DG.Tweening;
2025-11-20 14:44:09 +08:00
using UnityEngine;
public class TurnManager : MonoBehaviour
{
// ======== serializeField ========
2025-11-20 17:06:04 +08:00
[SerializeField] private List<GameObject> playerCharacterGo; // 玩家队伍列表(应该传入5个角色), 暂时只传3个
2025-11-20 14:44:09 +08:00
[SerializeField] private int defaultHandCardNumber = 5; // 默认手牌数量
2025-11-21 02:12:50 +08:00
[SerializeField] private float cardDistributeDuration = 0.25f; // 系统发牌动画时间
[SerializeField] private float cardDragDuration = 0.25f; // 每张卡牌拖拽动画时间
[SerializeField] private float cardDiscardDuration = 0.25f; // 系统弃牌动画时间
2025-11-20 14:44:09 +08:00
2025-11-21 20:16:36 +08:00
2025-11-20 14:44:09 +08:00
// ======== private ========
private TurnManagerSingleton turnManagerSingleton;
2025-11-20 17:20:34 +08:00
[SerializeField] private List<Card> cardDeckList; // 牌组
2025-11-20 17:06:04 +08:00
private readonly List<Card> cardPileList = new(); // 弃牌堆
2025-11-20 14:44:09 +08:00
private TurnManagerStateEnum turnManagerState; // 状态机
2025-11-20 20:02:48 +08:00
private CharacterManager characterManager;
2025-11-21 02:12:50 +08:00
private CardManager cardManager;
public enum TurnManagerStateEnum
{
WAIT = 0,
SETUP_STATE = 1,
SELF_STATE_START = 2,
ENEMY_STATE_START = 3,
}
2025-11-20 14:44:09 +08:00
private void Start()
{
turnManagerSingleton = TurnManagerSingleton.Instance;
2025-11-20 20:02:48 +08:00
characterManager = GetComponent<CharacterManager>();
2025-11-21 02:12:50 +08:00
cardManager = GetComponent<CardManager>();
2025-11-20 14:44:09 +08:00
TurnEnterSetupState();
}
2025-11-21 02:12:50 +08:00
public TurnManagerStateEnum GetTurnManagerState() => turnManagerState;
2025-11-20 20:02:48 +08:00
private void TurnEnterSetupState() // 进入设置状态
2025-11-20 14:44:09 +08:00
{
turnManagerState = TurnManagerStateEnum.SETUP_STATE;
2025-11-21 02:12:50 +08:00
if (turnManagerSingleton.GetNeedDebugLog()) turnManagerSingleton.PrintMsg("TurnManager", "状态切换", "进入设置状态");
2025-11-20 17:20:34 +08:00
cardDeckList?.Clear();
cardPileList?.Clear();
2025-11-21 02:12:50 +08:00
// foreach (var playerCharacter in playerCharacterList) playerCharacter.SetID(playerCharacterList.IndexOf(playerCharacter));
2025-11-21 20:16:36 +08:00
characterManager.SetupCharacterManager(playerCharacterGo);
2025-11-21 02:12:50 +08:00
characterManager.MathWorldPositionPoint();
2025-11-21 20:16:36 +08:00
var (characterOwnedCardTweenList, cardDeck) = characterManager.RenderCharacterSpriteReturnCardTween();
cardDeckList = cardDeck;
cardManager.SetupCardManager();
cardManager.ShuffleCardToDeck(characterOwnedCardTweenList);
2025-11-21 02:12:50 +08:00
// TurnEnterSelfState();
2025-11-20 14:44:09 +08:00
}
2025-11-20 20:02:48 +08:00
private void TurnEnterSelfState() // 我方回合状态
{
2025-11-21 20:16:36 +08:00
// 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);
2025-11-20 20:02:48 +08:00
}
2025-11-20 14:44:09 +08:00
}