public static Map SetRoom(this Map map, int x, int y, IRoom room) { if (map == null) { throw new ArgumentNullException(nameof(map)); } if (room == null) { throw new ArgumentNullException(nameof(room)); } map.RemoveRoomAt(x, y); var destinationRoom = map.CreateRoomAt(x, y); room.CopyTo(destinationRoom); return(map); }
public Map Clone() { var clone = new Map(Width, Height, RoomWidth, RoomHeight); for (var x = 0; x < Width; x++) { for (var y = 0; y < Height; y++) { if (!HasRoomAt(x, y)) { continue; } var sourceRoom = _rooms[x, y]; var destinationRoom = clone.CreateRoomAt(x, y); Copy(sourceRoom, destinationRoom); } } return(clone); }