using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public class TurnHandler : MonoBehaviour { #region Statication public static TurnHandler instance; private void Awake() { if (instance != null && instance != this) { Destroy(gameObject); return; } instance = this; } #endregion public List playerEntities = new(); public List enemyEntities = new(); public enum GameState {PlayerTurn, EnemyTurn} public GameState currentGameState = GameState.PlayerTurn; private int currentEnemy = 0; private void SortEnemies() { enemyEntities = enemyEntities.OrderBy(o=>o.turnSpeed).ToList(); } private void Start() { SortEnemies(); } public void UpdateTurns() { if (currentGameState == GameState.PlayerTurn) { bool allDone = true; foreach (PlayerEntity player in playerEntities) { if (!player.hasMoved || !player.hasAttacked) { allDone = false; } } if (allDone) { currentGameState = GameState.EnemyTurn; enemyEntities[0].StartTurn(); } } else if (currentGameState == GameState.EnemyTurn) { enemyEntities[currentEnemy].StartTurn(); currentEnemy++; if (currentEnemy > enemyEntities.Count - 1) { currentGameState = GameState.PlayerTurn; foreach (PlayerEntity player in playerEntities) { player.hasMoved = false; player.hasAttacked = false; } } } } }