public void TemplateCanBeOverlappedUsingOverrideTemplateIfSecondTemplateOnlyReplacesNonFloorTiles() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testalignmentroom3.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); Stream overlapFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testoverlap.room"); RoomTemplate room2 = RoomTemplateLoader.LoadTemplateFromFile(overlapFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); //Base TemplatePositioned templatePos1 = new TemplatePositioned(5, 5, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); //Overlap in smaller room TemplatePositioned templatePos2 = new TemplatePositioned(5, 6, 0, room2, 0); mapGen.OverridePositionedTemplate(templatePos2); Map outputMap = mapGen.MergeTemplatesIntoMap(GetStandardTerrainMapping()); Assert.AreEqual(MapTerrain.ClosedDoor, outputMap.mapSquares[0, 2].Terrain); Assert.AreEqual(MapTerrain.ClosedDoor, outputMap.mapSquares[3, 2].Terrain); }
public void TemplateCanBeOverlappedUsingUnconditionallyOverrideTemplateWhenTerrainTypesDontMatch() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.test4doors.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); Stream overlapFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testoverlap.room"); RoomTemplate room2 = RoomTemplateLoader.LoadTemplateFromFile(overlapFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); //Base TemplatePositioned templatePos1 = new TemplatePositioned(5, 5, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); //Overlap in smaller room TemplatePositioned templatePos2 = new TemplatePositioned(5, 5, 0, room2, 0); mapGen.UnconditionallyOverridePositionedTemplate(templatePos2); Map outputMap = mapGen.MergeTemplatesIntoMap(GetStandardTerrainMapping()); Assert.AreEqual(MapTerrain.Wall, outputMap.mapSquares[3, 0].Terrain); Assert.AreEqual(MapTerrain.ClosedDoor, outputMap.mapSquares[0, 1].Terrain); }
public void AddingOverlappingTemplatesWorksIfOverlapIsTransparent() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); RoomTemplate corridor1 = LoadTemplateFromFileRogueBasin("RogueBasin.bin.Debug.vaults.corridortemplate3x1.room"); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); //Start TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); //End TemplatePositioned templatePos2 = new TemplatePositioned(-10, 20, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos2); //Middle TemplatePositioned templatePos3 = new TemplatePositioned(-8, 30, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos3); //Corridor from start - end that overlaps middle var expandedCorridorAndPoint = RoomTemplateUtilities.ExpandCorridorTemplateLShaped(6, 28, true, corridor1); var positionedCorridor = new TemplatePositioned(-2, 4, 0, expandedCorridorAndPoint.Item1, 3); Assert.IsTrue(mapGen.AddPositionedTemplate(positionedCorridor)); }
public void CyclesOnSeparateLevelsCanBeReturned() { var builder = new MapInfoBuilder(); var l1ConnectivityMap = new ConnectivityMap(); //Cycle in level 1 l1ConnectivityMap.AddRoomConnection(1, 2); l1ConnectivityMap.AddRoomConnection(2, 3); l1ConnectivityMap.AddRoomConnection(3, 1); var l1RoomList = new List <TemplatePositioned>(); var room1 = new TemplatePositioned(1, 1, 0, null, 1); l1RoomList.Add(room1); l1RoomList.Add(new TemplatePositioned(1, 1, 0, null, 2)); l1RoomList.Add(new TemplatePositioned(1, 1, 0, null, 3)); var l2ConnectivityMap = new ConnectivityMap(); //Cycle in level 2 l2ConnectivityMap.AddRoomConnection(5, 6); l2ConnectivityMap.AddRoomConnection(6, 7); l2ConnectivityMap.AddRoomConnection(7, 5); var l2RoomList = new List <TemplatePositioned>(); var room5 = new TemplatePositioned(1, 1, 0, null, 5); l2RoomList.Add(room5); l2RoomList.Add(new TemplatePositioned(1, 1, 0, null, 6)); l2RoomList.Add(new TemplatePositioned(1, 1, 0, null, 7)); builder.AddConstructedLevel(0, l1ConnectivityMap, l1RoomList, new Dictionary <Connection, Point>(), 1); builder.AddConstructedLevel(1, l2ConnectivityMap, l2RoomList, new Dictionary <Connection, Point>(), new Connection(3, 5)); var mapInfo = new MapInfo(builder); var cyclesOnLevel0 = mapInfo.GetCyclesOnLevel(0).ToList(); Assert.AreEqual(1, cyclesOnLevel0.Count()); CollectionAssert.AreEquivalent(cyclesOnLevel0[0], new List <Connection> { new Connection(1, 2), new Connection(2, 3), new Connection(3, 1) }); var cyclesOnLevel1 = mapInfo.GetCyclesOnLevel(1).ToList(); Assert.AreEqual(1, cyclesOnLevel1.Count()); CollectionAssert.AreEquivalent(cyclesOnLevel1[0], new List <Connection> { new Connection(5, 6), new Connection(6, 7), new Connection(7, 5) }); }
public void RoomTemplatesCanBeRetrievedById() { RoomTemplate room1 = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom1.room"); TemplatedMapBuilder mapBuilder = new TemplatedMapBuilder(); TemplatedMapGenerator mapGen = new TemplatedMapGenerator(mapBuilder); var room1Id = mapGen.PlaceRoomTemplateAtPosition(room1, new Point(-5, -5)); TemplatePositioned roomTemplate = mapGen.GetRoomTemplateById(room1Id); Assert.AreEqual(new Point(-5, -5), roomTemplate.Location); }
public void TestAddTemplateOnTopWorksWithNoExistingTemplates() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); Assert.IsTrue(mapGen.AddPositionedTemplate(templatePos1)); }
public void RoomsWithOverlapOnTransparentBoundariesCanBeAdded() { RoomTemplate room1 = LoadTemplateFromAssemblyFile("DDRogueTest.testdata.vaults.testsolid1.room"); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); TemplatePositioned templatePos2 = new TemplatePositioned(9, 0, 1, room1, 0); Assert.IsTrue(mapGen.AddPositionedTemplate(templatePos2)); }
public void RoomsAtHighXWhichMergeShouldntOverlap() { RoomTemplate room1 = LoadTemplateFromAssemblyFile("DDRogueTest.testdata.vaults.testsolid1.room"); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(20, 20, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); TemplatePositioned templatePos2 = new TemplatePositioned(21, 21, 1, room1, 0); Assert.IsFalse(mapGen.AddPositionedTemplate(templatePos2)); }
public void RoomsCanBePlacedAtPresetZUsingAddPositionedTemplate() { //Load sample template 8x4 RoomTemplate room1 = LoadTemplateFromAssemblyFile("DDRogueTest.testdata.vaults.testsolid1.room"); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); TemplatePositioned templatePos2 = new TemplatePositioned(8, 0, 0, room1, 0); Assert.IsTrue(mapGen.AddPositionedTemplate(templatePos2)); }
public void MapContainsCorrectIdOnSingleRoom() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 12); mapGen.AddPositionedTemplate(templatePos1); Map outputMap = mapGen.MergeTemplatesIntoMap(GetStandardTerrainMapping()); Assert.IsTrue(outputMap.roomIdMap[0, 0] == 12); }
public void TemplateCanBeOverlappedByItself() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testalignmentroom3.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); //Base TemplatePositioned templatePos1 = new TemplatePositioned(5, 5, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); //Overlap the same room as a limit test Assert.IsTrue(mapGen.OverridePositionedTemplate(templatePos1)); }
public void PotentialDoorsShouldBeAvailableFromPositionedTemplate() { RoomTemplate room1 = LoadTemplateFromAssemblyFile("DDRogueTest.testdata.vaults.test4doors.room"); TemplatePositioned templatePos1 = new TemplatePositioned(11, 12, 0, room1, 0); //Doors at: (3,0),(0,1),(7,1),(3,3) List <Point> outputList = new List <Point>(); outputList.Add(new Point(14, 12)); outputList.Add(new Point(11, 13)); outputList.Add(new Point(18, 13)); outputList.Add(new Point(14, 15)); List <Point> doorList = templatePos1.PotentialDoors.ToList(); CollectionAssert.AreEqual(doorList, outputList); }
public void TestNonOverlappingSolidRoomsCanBeCheckedToBeAllowedToBePlaced() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); TemplatePositioned templatePos2 = new TemplatePositioned(8, 0, 10, room1, 0); Assert.IsTrue(mapGen.CanBePlacedWithoutOverlappingOtherTemplates(templatePos2)); }
public void RoomsWhichOverlapOnFloorWallCantBeAdded() { //Completely overlapping rooms cause problems with door removal etc. so they can't be allowed //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); TemplatePositioned templatePos2 = new TemplatePositioned(1, 0, 10, room1, 0); Assert.IsFalse(mapGen.AddPositionedTemplate(templatePos2)); }
public void TerrainAtPointCanBeOverriden() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 1); mapGen.AddPositionedTemplate(templatePos1); mapGen.AddOverrideTerrain(new Point(0, 0), RoomTemplateTerrain.Floor); Map outputMap = mapGen.MergeTemplatesIntoMap(GetStandardTerrainMapping()); Assert.AreEqual(MapTerrain.Empty, outputMap.mapSquares[0, 0].Terrain); }
public void AddingOverlappingTemplatesDoesntWorkIfOOverlapBetweenWallAndDoor() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.test4doors.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); //Base TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); //Overlapping by wall and door only TemplatePositioned templatePos2 = new TemplatePositioned(7, 1, 0, room1, 0); Assert.IsFalse(mapGen.AddPositionedTemplate(templatePos2)); }
public void RoomsCanBeRetrievedByIndex() { var newTemplate = new TemplatePositioned(9, 9, 0, null, 100); var mapInfoBuilder = new MapInfoBuilder(); var templateList = new List <TemplatePositioned>(); templateList.Add(newTemplate); var map = new ConnectivityMap(); map.AddRoomConnection(new Connection(100, 101)); mapInfoBuilder.AddConstructedLevel(0, map, templateList, new Dictionary <Connection, Point>(), 100); var mapInfo = new MapInfo(mapInfoBuilder); Assert.AreEqual(new Point(9, 9), mapInfo.GetRoom(100).Location); }
public void AddingOverlappingTemplatesWorksIfTwoRowOverlapWithOneRowWall() { //Completely overlapping rooms cause problems with door removal etc. so they can't be allowed //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testsolid1.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); TemplatePositioned templatePos1 = new TemplatePositioned(0, 0, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); TemplatePositioned templatePos2 = new TemplatePositioned(6, 2, 10, room1, 0); var addResult = mapGen.AddPositionedTemplate(templatePos2); Assert.IsFalse(addResult); }
private MapInfoBuilder GetStandardMapInfoBuilder() { var builder = new MapInfoBuilder(); var l1ConnectivityMap = new ConnectivityMap(); l1ConnectivityMap.AddRoomConnection(1, 2); l1ConnectivityMap.AddRoomConnection(2, 3); var l1RoomList = new List <TemplatePositioned>(); var room1 = new TemplatePositioned(1, 1, 0, null, 1); l1RoomList.Add(room1); l1RoomList.Add(new TemplatePositioned(1, 1, 0, null, 2)); l1RoomList.Add(new TemplatePositioned(1, 1, 0, null, 3)); var l2ConnectivityMap = new ConnectivityMap(); l2ConnectivityMap.AddRoomConnection(5, 6); l2ConnectivityMap.AddRoomConnection(6, 7); var l2RoomList = new List <TemplatePositioned>(); var room5 = new TemplatePositioned(1, 1, 0, null, 5); l2RoomList.Add(room5); l2RoomList.Add(new TemplatePositioned(1, 1, 0, null, 6)); l2RoomList.Add(new TemplatePositioned(1, 1, 0, null, 7)); var l1DoorDict = new Dictionary <Connection, Point>(); l1DoorDict.Add(new Connection(2, 3), new Point(5, 5)); var l2DoorDict = new Dictionary <Connection, Point>(); l2DoorDict.Add(new Connection(5, 6), new Point(8, 8)); builder.AddConstructedLevel(0, l1ConnectivityMap, l1RoomList, l1DoorDict, 1); builder.AddConstructedLevel(1, l2ConnectivityMap, l2RoomList, l2DoorDict, new Connection(3, 5)); return(builder); }
public void TemplateCantBeOverlappedUsingOverrideTemplateIfSecondTemplateTriesToReplacesNonFloorTiles() { //Load sample template 8x4 Assembly _assembly = Assembly.GetExecutingAssembly(); Stream roomFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.test4doors.room"); RoomTemplate room1 = RoomTemplateLoader.LoadTemplateFromFile(roomFileStream, StandardTemplateMapping.terrainMapping); Stream overlapFileStream = _assembly.GetManifestResourceStream("DDRogueTest.testdata.vaults.testoverlap.room"); RoomTemplate room2 = RoomTemplateLoader.LoadTemplateFromFile(overlapFileStream, StandardTemplateMapping.terrainMapping); TemplatedMapBuilder mapGen = new TemplatedMapBuilder(); //Base TemplatePositioned templatePos1 = new TemplatePositioned(5, 5, 0, room1, 0); mapGen.AddPositionedTemplate(templatePos1); //Overlap in smaller room TemplatePositioned templatePos2 = new TemplatePositioned(5, 5, 0, room2, 0); Assert.IsFalse(mapGen.OverridePositionedTemplate(templatePos2)); }