using System.Collections.Generic; using TMPro; using UnityEngine; public class GameManager : MonoBehaviour { #region Static Fields public static List players = new List(); public static List activePlayers = new List(); public static List tempDeadPlayers = new List(); public static List deadOwners = new List(); public static int coinsPerTree = 50; #endregion [SerializeField] private TextMeshProUGUI _coinText; private void Awake() { activePlayers.Clear(); tempDeadPlayers.Clear(); players.Clear(); DeathChecker.OnPlayerDeath += KillPlayer; DeathChecker.OnPlayerRes += ResPlayer; DeathChecker.OnPlayerDeathPermanent += DestroyPermanent; GameData.OnCoinsCollected += UpdateCoinUI; players = FindPlayers(); SetupActivePlayers(players); } private void UpdateCoinUI() { _coinText.text = GameData.coins.ToString(); } private void SetupActivePlayers(List allPlayers) { foreach (var player in allPlayers) { activePlayers.Add(player); } } private void KillPlayer(PlayerState deadPlayer) { activePlayers.Remove(deadPlayer); tempDeadPlayers.Add(deadPlayer); } private void ResPlayer(PlayerState resPlayer) { activePlayers.Add(resPlayer); tempDeadPlayers.Remove(resPlayer); } private void DestroyPermanent(PlayerState deadPlayer) { Debug.Log("destroyed perm " + deadPlayer.name); activePlayers.Remove(deadPlayer); players.Remove(deadPlayer); foreach (var player in activePlayers) { player.ResetEnemies(); } deadOwners.Add(deadPlayer.ownerIndex); } private List FindPlayers() { List resultPlayerList = new List(); var players = FindObjectsOfType(); foreach (var player in players) { resultPlayerList.Add(player); } return resultPlayerList; } } public enum TileOwner { Neutral = 0, Ariost = 1, Ragnar = 2, Emir = 3, Asvald = 4, }