FindPath() public method

public FindPath ( Tile start, Tile end, int maxDist, int controllingPlayerId ) : List
start Tile
end Tile
maxDist int
controllingPlayerId int
return List
Beispiel #1
0
        public void FindPath()
        {
            var mapService = new MapService();
            mapService.mapModel = new MapModel()
            {
                name = "test map",
                maxPlayers = 0,
                root = null,
                tiles = CreateTiles(10, 10)
            };
            mapService.pieces = new PiecesModel()
            {
                Pieces = new List<PieceModel>()
                {
                    MockPiece(new Vector2(1, 2), false),
                    MockPiece(new Vector2(2, 3), true),
                    MockPiece(new Vector2(3, 2), true),
                    MockPiece(new Vector2(4, 2), true),
                    MockPiece(new Vector2(5, 2), false)
                }
            };

            var start = mapService.mapModel.tiles[new Vector2(2,2)];

            //test to walk around enemy
            var enemyEnd = mapService.mapModel.tiles[new Vector2(0,2)];

            var enemyPath = mapService.FindPath(start, enemyEnd, 4, 1);
            var expectedEnemyPath = new List<Vector2>()
            {
                new Vector2(2, 3),
                new Vector2(1, 3),
                new Vector2(0, 3),
                new Vector2(0, 2),
            };

            CollectionAssert.AreEqual(
                enemyPath.Select(t => t.position).ToList(),
                expectedEnemyPath
            );

            //test to walk through friendly
            var end = mapService.mapModel.tiles[new Vector2(2,4)];
            var tilePath = mapService.FindPath(start, end, 2, 1);
            var expectedTiles = new List<Vector2>()
            {
                new Vector2(2, 3),
                new Vector2(2, 4)
            };

            CollectionAssert.AreEqual(
                tilePath.Select(t => t.position).ToList(),
                expectedTiles
            );

            //test to attack enemy but not land on a friendly
            var passThroughEnd = mapService.mapModel.tiles[new Vector2(5,2)];
            var passTilePath = mapService.FindPath(start, passThroughEnd, 6, 1);
            var passExpectedTiles = new List<Vector2>()
            {
                new Vector2(3, 2),
                new Vector2(3, 3),
                new Vector2(4, 3),
                new Vector2(5, 3),
                new Vector2(5, 2)
            };

            CollectionAssert.AreEqual(
                passTilePath.Select(t => t.position).ToList(),
                passExpectedTiles
            );
        }