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); } }
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) ); } }