using System.Collections; using System.Collections.Generic; using UnityEngine; using InfallibleCode; using System; [System.Serializable] public class RoomTriggerPendingCategory { public string roomSceneName; public int categoryIndex; } [System.Serializable] public class RoomTriggersData { public List newNearbyRoomSceneNames = new List(); public string roomSceneName; public int activeCategoryIndex = 0; // <-- ΝΕΟ για να θυμόμαστε ποιο category ήταν ενεργό } public class RoomManager : MonoBehaviour { private static RoomManager _instance; public static RoomManager GetInstance() { return _instance; } public int _roomID; public List closetHideBehaviour = new List(); public List bedHideBehaviour = new List(); public RoomTrigger LastRoomTriggerPlayerEntered; public List _roomPatrolPoints = new List(); public List _nearbyRoomSceneNames = new List(); public List necessarySceneNamesToKeepLoaded = new List(); //public List additiveScenesLoaded; //public List>> roomConnections = new List>>(); public List roomTriggersData = new List(); public List roomTriggersSnapshotData = new List(); public List pendingCategoryChanges = new List(); public List activeRoomTriggers = new List(); public event Action OnRoomsChanged = delegate { }; private void Awake() { if (_instance == null) { _instance = this; DontDestroyOnLoad(gameObject); // This ensures the object persists across scene loads } else { Destroy(gameObject); // This prevents duplicate instances } } //void Start() public void RegisterRoomTrigger(RoomTrigger trigger) { if (!activeRoomTriggers.Contains(trigger)) { activeRoomTriggers.Add(trigger); } } public void UnregisterRoomTrigger(RoomTrigger trigger) { if (activeRoomTriggers.Contains(trigger)) { activeRoomTriggers.Remove(trigger); } } public void RoomsChanged() { OnRoomsChanged?.Invoke(); print("OnRoomsChanged EVENT"); } //players hidding spot: method get players hidding spot -> returns transform // hidding spots //room patrol points: it doesnt have to do with if the player is hidden or not }