Beispiel #1
0
        public void TestGameTimeTick(GameTimeTickTestCase testCase)
        {
            var map = testCase.Map ?? new Map(
                tiles: new MapTile[] {
                new MapTile(height: 0.0f, type: MapTileType.Water)
            },
                width: 1,
                height: 1
                );
            var mapGenerator     = new DummyMapGenerator(map);
            var mapToWorldMapper = new DummyMapToWorldMapper();
            var game             = new Game(
                mapGenerator: mapGenerator,
                spawnMapTile: (tile, mapX, mapY, worldPos) => {},
                mapToWorldMapper: mapToWorldMapper,
                initialMoney: testCase.InitialMoney,
                incomePerEconomyTick: testCase.IncomePerEconomyTick,
                economyTickInterval: testCase.EconomyTickInterval
                );

            testCase.SetupGame(game);

            game.GameTimeTick();

            foreach (var check in testCase.ChecksAfterTick)
            {
                check(game);
            }
        }
Beispiel #2
0
        public void TestPlaceBuildingOnTile(
            PlaceBuildingOnTileTestCase testCase
            )
        {
            var mapTile = new MapTile(
                type: MapTileType.Water,
                height: 0.0f
                );
            var map = new Map(
                tiles: new MapTile[] {
                mapTile.Clone(), mapTile.Clone(),
                mapTile.Clone(), mapTile.Clone()
            },
                width: 2,
                height: 2
                );
            var dummyMapToWorldMapper = new DummyMapToWorldMapper();
            var mapGenerator          = new DummyMapGenerator(map);

            var game = new Game(
                mapGenerator: mapGenerator,
                spawnMapTile: (tileToSpawn, mapX, mapY, worldPos) => {},
                mapToWorldMapper: dummyMapToWorldMapper,
                initialMoney: testCase.InitialMoney,
                incomePerEconomyTick: 0, // don't care
                economyTickInterval: 0   // don't care
                );

            var spawnPositions = new List <Vector3>();
            var tile           = testCase.Tile.Clone();

            game.PlaceBuildingOnTile(
                tile: tile,
                mapX: testCase.MapX,
                mapY: testCase.MapY,
                buildingCategoryParams: testCase.BuildingCategoryParams,
                spawnBuilding: worldPos => {
                spawnPositions.Add(worldPos);
            }
                );

            if (testCase.ExpectedMapTile != null)
            {
                Assert.That(
                    tile,
                    Is.EqualTo(testCase.ExpectedMapTile)
                    );
            }

            if (testCase.ExpectedSpawnPos == null)
            {
                Assert.That(spawnPositions.Count, Is.EqualTo(0));
            }
            else
            {
                Assert.That(spawnPositions.Count, Is.EqualTo(1));
                Assert.That(
                    spawnPositions[0],
                    Is.EqualTo(testCase.ExpectedSpawnPos)
                    );
            }

            if (testCase.ExpectedAvailableMoney != null)
            {
                Assert.That(
                    game.AvailableMoney,
                    Is.EqualTo(testCase.ExpectedAvailableMoney)
                    );
            }
        }