Example #1
0
        public void NavigationService_weighs_values()
        {
            RoomService roomService = NSubstitute.Substitute.For <RoomService>();
            FloorPlan   plan        = new FloorPlan(20, 20, fill: true);

            RoomPlan roomPlan = new RoomPlan
            {
                Name       = "Test",
                Width      = 5,
                Height     = 5,
                WallValue  = 20,
                FloorValue = 1,
                DoorTile   = new DoorTile(4, 2, cost: 3, notes: "Door")
            };
            IFloorRoom room = roomService.GenerateRoom(roomPlan);

            plan.AddRoom(room, new Location(3, 12));

            var display = plan.Print();

            Debug.WriteLine(display);

            NavigationService navService = NSubstitute.Substitute.For <NavigationService>(plan);
            var path = navService.FindPath(new Location(1, 1), new Location(5, 14));

            display = plan.Print(path);
            Debug.Write(display);
        }
Example #2
0
        public List <Location> Navigate(Location start, Location end, List <Location> path)
        {
            List <Location> pathSoFar = path;
            IFloorRoom      room      = FloorPlan.GetRoom(start);

            if (room == FloorPlan.GetRoom((end)))
            {
                pathSoFar.AddRange(FindPath(start, end));
                return(pathSoFar);
            }
            else
            {
                var doors = room.DoorTiles;
                foreach (var door in room.DoorTiles)
                {
                    pathSoFar.AddRange(Pathfinder.FindPath(start, door.Point));
                    var exitTile = door.ExitTile;

                    Navigate(exitTile.Point, end, pathSoFar);
                }
            }


            return(pathSoFar);
        }
        public void RoomService_generates_room()
        {
            RoomService service = NSubstitute.Substitute.For <RoomService>();

            // North door
            RoomPlan roomType = new RoomPlan
            {
                Name       = "Test",
                Width      = 3,
                Height     = 3,
                WallValue  = 5,
                FloorValue = 1,
                DoorTile   = new DoorTile(1, 0, cost: 3, notes: "Door")
            };

            IFloorRoom room    = service.GenerateRoom(roomType);
            string     display = room.FloorTiles.Print();

            Debug.WriteLine(display);
            display.ShouldBeEquivalentTo("535" + Environment.NewLine + "5_5" + Environment.NewLine + "555" + Environment.NewLine);

            // East door
            roomType.DoorTile = new DoorTile(2, 1, cost: 3, notes: "Door");
            room    = service.GenerateRoom(roomType);
            display = room.FloorTiles.Print();
            Debug.WriteLine(display);
            display.ShouldBeEquivalentTo("555" + Environment.NewLine + "5_3" + Environment.NewLine + "555" + Environment.NewLine);

            // South door
            roomType.DoorTile = new DoorTile(1, 2, cost: 3, notes: "Door");
            room    = service.GenerateRoom(roomType);
            display = room.FloorTiles.Print();
            Debug.WriteLine(display);
            display.ShouldBeEquivalentTo("555" + Environment.NewLine + "5_5" + Environment.NewLine + "535" + Environment.NewLine);

            // West door
            roomType.DoorTile = new DoorTile(0, 1, cost: 3, notes: "Door");
            room    = service.GenerateRoom(roomType);
            display = room.FloorTiles.Print();
            Debug.WriteLine(display);
            display.ShouldBeEquivalentTo("555" + Environment.NewLine + "3_5" + Environment.NewLine + "555" + Environment.NewLine);

            // North door wide
            roomType.Width    = 4;
            roomType.DoorTile = new DoorTile(1, 0, cost: 3, notes: "Door");
            room    = service.GenerateRoom(roomType);
            display = room.FloorTiles.Print();
            Debug.WriteLine(display);
            display.ShouldBeEquivalentTo("5355" + Environment.NewLine + "5__5" + Environment.NewLine + "5555" + Environment.NewLine);
        }
Example #4
0
        public void AddRoom(IFloorRoom room, Location origin)
        {
            var placedRoom = room.Shift(origin);

            FloorRooms.Add(placedRoom);
            foreach (var tile in placedRoom.FloorTiles)
            {
                if (tile.X < Width && tile.Y < Height)
                {
                    var oldTile = GetFloorTile(tile.X, tile.Y);
                    if (oldTile != null)
                    {
                        FloorTiles.Remove(oldTile);
                    }
                    FloorTiles.Add(tile);
                }
            }
        }
Example #5
0
 public void AddRoom(IFloorRoom room)
 {
     AddRoom(room, new Location(0, 0));
 }