using System.Collections.Generic; using System.Linq; using Unity.BossRoom.Gameplay.GameplayObjects.Character; using UnityEngine; public class CrowManager : MonoBehaviour { public static CrowManager Instance { get; private set; } private List players = new List(); private ServerCharacter currentCrow; private void Awake() { if (Instance != null && Instance != this) { Destroy(this); return; } Instance = this; } private void Start() { // players = FindObjectsOfType().ToList(); } private void Update() { DetermineCrow(); } private void DetermineCrow() { int unoccupiedPlayers = 0; ServerCharacter potentialCrow = null; foreach (var player in players) { if (!player.IsOnAPlatform) { unoccupiedPlayers++; potentialCrow = player; } } // If exactly one player is not on a platform, assign as crow if (unoccupiedPlayers == 1) { AssignCrow(potentialCrow); } else if (unoccupiedPlayers == 0 && currentCrow != null) { // All players are on platforms, clear crow ClearCrow(); } } private void AssignCrow(ServerCharacter player) { if (currentCrow == player) return; // Already the crow if (currentCrow != null) { // Clear old crow currentCrow.SetAsCrow(false); } currentCrow = player; currentCrow.SetAsCrow(true); Debug.Log($"{currentCrow.name} is now the Crow."); } private void ClearCrow() { if (currentCrow != null) { currentCrow.SetAsCrow(false); Debug.Log($"{currentCrow.name} is no longer the Crow."); currentCrow = null; } } public void AddCharacterToList(ServerCharacter character) { players.Add(character); } public void RemoveCharacterFromList(ServerCharacter character) { players.Remove(character); } }