using System.Collections.Generic; using UnityEngine; /// /// Object handling Room logic /// /// public class RoomHandler : MonoBehaviour { [Header("Doors")] [SerializeField] private GameObject wallNorth; [SerializeField] private GameObject wallSouth; [SerializeField] private GameObject wallEast; [SerializeField] private GameObject wallWest; public enum Side { North, South, East, West } private readonly Dictionary doors = new(); public void RegisterDoor(Side dir, DoorAnimation doorAnim) => doors[dir] = doorAnim; /// /// Creates entrances to corridors leading to other rooms /// /// /// /// /// public void SetEntrances(bool northOpen, bool southOpen, bool eastOpen, bool westOpen) { wallNorth.SetActive(!northOpen); wallSouth.SetActive(!southOpen); wallEast.SetActive(!eastOpen); wallWest.SetActive(!westOpen); } public void ToggleAllDoors() { foreach (DoorAnimation door in doors.Values) { door.ToggleDoor(); } } public void SetDoorState(Side dir, bool open) { if (doors.TryGetValue(dir, out DoorAnimation da)) { da.ToggleDoor(); Debug.Log("Door " + dir + " is now " + (open ? "open" : "closed")); } } }