示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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 ExcessAreaFromReplacedRoomsAreRemovedWhenSmallerRoomReplacesThem()
        {
            //Load sample template 8x4
            RoomTemplate baseRoom   = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom1.room");
            RoomTemplate joinedRoom = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom2.room");

            RoomTemplate replacementRoom = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testoverlap2.room");

            TemplatedMapBuilder   mapBuilder = new TemplatedMapBuilder();
            TemplatedMapGenerator mapGen     = new TemplatedMapGenerator(mapBuilder);

            mapGen.PlaceRoomTemplateAtPosition(baseRoom, new Point(0, 0));
            mapGen.PlaceRoomTemplateAlignedWithExistingDoor(joinedRoom, null, mapGen.PotentialDoors[0], 0, 0);

            mapGen.ReplaceRoomTemplate(0, new Connection(0, 1), replacementRoom, 0);

            var map = mapBuilder.MergeTemplatesIntoMap(GetStandardTerrainMapping());

            Assert.AreEqual(MapTerrain.Void, map.mapSquares[0, 0].Terrain);
        }
        public void UnconnectedDoorsCanBeReplacedWithOtherTerrain()
        {
            //With 4 doors
            RoomTemplate room1 = LoadTemplateFromFile("DDRogueTest.testdata.vaults.test4doors.room");

            TemplatedMapBuilder   mapBuilder = new TemplatedMapBuilder();
            TemplatedMapGenerator mapGen     = new TemplatedMapGenerator(mapBuilder);

            mapGen.PlaceRoomTemplateAtPosition(room1, new Point(0, 0));

            mapGen.ReplaceUnconnectedDoorsWithTerrain(RoomTemplateTerrain.Wall);

            //Check the doors are walls when merged
            var map = mapBuilder.MergeTemplatesIntoMap(GetStandardTerrainMapping());

            Assert.AreEqual(map.mapSquares[0, 3].Terrain, MapTerrain.Wall);
            Assert.AreEqual(map.mapSquares[7, 1].Terrain, MapTerrain.Wall);
            Assert.AreEqual(map.mapSquares[7, 0].Terrain, MapTerrain.Wall);
            Assert.AreEqual(map.mapSquares[3, 3].Terrain, MapTerrain.Wall);
        }
        public void RoomCanBeReplacedWithSmallerRoomsWithAlignmentCorrected()
        {
            //Load sample template 8x4
            RoomTemplate baseRoom   = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom1.room");
            RoomTemplate joinedRoom = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom2.room");

            RoomTemplate replacementRoom = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testoverlap2.room");

            TemplatedMapBuilder   mapBuilder = new TemplatedMapBuilder();
            TemplatedMapGenerator mapGen     = new TemplatedMapGenerator(mapBuilder);

            mapGen.PlaceRoomTemplateAtPosition(baseRoom, new Point(0, 0));
            mapGen.PlaceRoomTemplateAlignedWithExistingDoor(joinedRoom, null, mapGen.PotentialDoors[0], 0, 0);

            var replaceSuccess = mapGen.ReplaceRoomTemplate(0, new Connection(0, 1), replacementRoom, 0);

            //Check replacement was successful and terrain is correct
            var map = mapBuilder.MergeTemplatesIntoMap(GetStandardTerrainMapping());

            Assert.AreEqual(MapTerrain.Wall, map.mapSquares[4, 1].Terrain);
        }
        public void ConnectedDoorsCanBeReplacedWithOtherTerrain()
        {
            //Load sample template 8x4
            RoomTemplate room1     = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom1.room");
            RoomTemplate room2     = LoadTemplateFromFile("DDRogueTest.testdata.vaults.testalignmentroom2.room");
            RoomTemplate corridor1 = LoadTemplateFromFileRogueBasin("RogueBasin.bin.Debug.vaults.corridortemplate3x1.room");

            TemplatedMapBuilder   mapBuilder = new TemplatedMapBuilder();
            TemplatedMapGenerator mapGen     = new TemplatedMapGenerator(mapBuilder);

            mapGen.PlaceRoomTemplateAtPosition(room1, new Point(0, 0));
            mapGen.PlaceRoomTemplateAtPosition(room2, new Point(7, 8));

            bool corridorPlacement = mapGen.JoinDoorsWithCorridor(mapGen.PotentialDoors[0], mapGen.PotentialDoors[1], corridor1);

            mapGen.ReplaceConnectedDoorsWithTerrain(RoomTemplateTerrain.Floor);

            //Check the doors are floor when merged
            var map = mapBuilder.MergeTemplatesIntoMap(GetStandardTerrainMapping());

            Assert.AreEqual(MapTerrain.Empty, map.mapSquares[4, 3].Terrain);
            Assert.AreEqual(MapTerrain.Empty, map.mapSquares[8, 8].Terrain);
        }