using System.Collections.Generic; using NUnit.Framework; using Unity.VisualScripting; namespace DungeonGenerator { public enum RoomType { Normal, Entrance, Monster, Boss } public class Room { public Room(RoomType roomType, int width, int height, Point positionOfTopLeft) { TypeOfRoom = roomType; Width = width; Height = height; PositionOfTopLeft = positionOfTopLeft; } private List _topAdjacentRooms = new List(); private List _bottomAdjacentRooms = new List(); private List _leftAdjacentRooms = new List(); private List _rightAdjacentRooms = new List(); public RoomType TypeOfRoom { get; set; } public int Height { get; set; } public int Width { get; set; } public Point PositionOfTopLeft { get; set; } public List GetPointsInRoom() { List points = new List(); for (int i = 0; i < Width; i++) { for (int j = 0; j < Height; j++) { points.Add(new Point(PositionOfTopLeft.X + i, PositionOfTopLeft.Y + j)); } } return points; } public int GetDistanceToRoom(Room other) { Point centerOfRoom = GetCenterOfRoom(); Point centerOfOther = other.GetCenterOfRoom(); return centerOfRoom.ManhattanDistance(centerOfOther); } public Point GetCenterOfRoom() { return new Point(PositionOfTopLeft.X + Width / 2, PositionOfTopLeft.Y + Height / 2); } public void AddTopAdjacentRoom(Room room) { _topAdjacentRooms.Add(room); } public List GetTopAdjaceRooms() { return _topAdjacentRooms; } public void AddBottomAdjacentRoom(Room room) { _bottomAdjacentRooms.Add(room); } public List GetBottomAdjaceRooms() { return _bottomAdjacentRooms; } public void AddLeftAdjacentRoom(Room room) { _leftAdjacentRooms.Add(room); } public List GetLeftAdjaceRooms() { return _leftAdjacentRooms; } public void AddRightAdjacentRoom(Room room) { _rightAdjacentRooms.Add(room); } public List GetRightAdjaceRooms() { return _rightAdjacentRooms; } } }