public void Builder_WithSize_LessThanOne_ThrowsArgumentOutOfRangeException(int x, int y) { var builder = new Map.Builder(); Assert.That(() => builder.WithSize(x, y), Throws.InstanceOf <ArgumentOutOfRangeException>()); }
private void Generate() { Assert.IsNotNull(_cellToTileTranslator); Assert.IsNotNull(_floorTilemap); Assert.IsNotNull(_templates); Assert.IsNotNull(_floorTile); Map = new Map.Builder() .WithSize(_mapSize.x, _mapSize.y) .WithRoomSize(_roomSize.x, _roomSize.y) .Build(); var generator = new MapGenerator(Map) { BranchProbability = _branchProbability, MinDensity = _minDensity }; foreach (var templateRoom in _templates.CreateRooms()) { generator.AddRoomTemplate(templateRoom); } generator.Generate(); Map = Map.GetCroppedClone() .GetCloneWithExtraBorderRooms(_borderInRooms) .CreateRemainingRoomsAndFillWithWalls(); Redraw(); }
private static void Main(string[] args) { var map = new Map.Builder() .WithSize(32, 16) .WithRoomSize(4, 4) .Build(); var room1 = map.CreateRoomTemplate() .SetCell(2, 2, Cells.Wall); var room2 = map.CreateRoomTemplate() .SetCell(1, 1, Cells.Wall) .SetCell(2, 2, Cells.Wall); var room3 = map.CreateRoomTemplate() .SetCell(2, 2, Cells.Treasure); var room4 = map.CreateRoomTemplate() .SetCell(2, 2, Cells.Trap); var room5 = map.CreateRoomTemplate(); var mapGenerator = new MapGenerator(map) .AddRoomTemplates(room1, room2, room3, room4, room5); mapGenerator.Generate(); Console.WriteLine(map); }
public void TotalSize_ReturnsRoomSizeTimesRoomCount(int width, int height, int roomWidth, int roomHeight) { var map = new Map.Builder() .WithSize(width, height) .WithRoomSize(roomWidth, roomHeight) .Build(); Assert.That(map.TotalWidth, Is.EqualTo(width * roomWidth)); Assert.That(map.TotalHeight, Is.EqualTo(height * roomHeight)); }
/** * <summary> * Converts map into protocol message.</summary> * * <param name="map">Map to convert.</param> * <returns>Protocol message map.</returns> */ private static Map WrapMap <TKey, TVal>(IDictionary <TKey, TVal> map) { Map.Builder builder = Map.CreateBuilder(); foreach (KeyValuePair <TKey, TVal> pair in map) { builder.AddEntry(WrapEntry(pair.Key, pair.Value)); } return(builder.Build()); }
/** * <summary> * Converts map into protocol message.</summary> * * <param name="map">Map to convert.</param> * <returns>Protocol message map.</returns> */ private static Map WrapMap(sc::IDictionary map) { Map.Builder builder = Map.CreateBuilder(); foreach (sc::DictionaryEntry pair in map) { builder.AddEntry(WrapEntry(pair.Key, pair.Value)); } return(builder.Build()); }
public static Map GetCroppedClone([NotNull] this Map map) { if (map == null) { throw new ArgumentNullException(nameof(map)); } if (!map.HasBounds(out var bounds)) { throw new InvalidOperationException("The map is empty."); } var(minX, maxX, minY, maxY) = bounds; var width = maxX - minX + 1; var height = maxY - minY + 1; var clone = new Map.Builder() .WithSize(width, height) .WithRoomSize(map.RoomWidth, map.RoomHeight) .Build(); for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { var sourceX = minX + x; var sourceY = minY + y; if (!map.TryGetRoomAt(sourceX, sourceY, out var sourceRoom)) { continue; } var destinationRoom = clone.CreateRoomAt(x, y); sourceRoom.CopyTo(destinationRoom); } } return(clone); }