// Setup game. // initialMoney: The initially available money. // economyTickInterval: // The number of game ticks that elapse between economy ticks. // incomePerEconomyTick: // Amount of Money that is added for each economy tick. public Game( IMapGenerator mapGenerator, MapTileSpawner spawnMapTile, IMapToWorldMapper mapToWorldMapper, int initialMoney, int incomePerEconomyTick, int economyTickInterval ) { this.Map = SpawnMap( mapGenerator: mapGenerator, spawnMapTile: spawnMapTile, mapToWorldMapper: mapToWorldMapper ); this.MapToWorldMapper = mapToWorldMapper; WorldSize = mapToWorldMapper.GetWorldSize( mapWidth: this.Map.Width, mapHeight: this.Map.Height ); Economy = new EconomySimulation( initialMoney: initialMoney, getIncome: () => incomePerEconomyTick, getUpkeepCosts: GetUpkeepCosts ); EconomyTickInterval = economyTickInterval; TicksUntilEconomyTick = economyTickInterval; this.Warehouse = new Warehouse(); //Debug.Log(Map.getNeighboursOfTile(0, 0)[1]); }
private Map SpawnMap( IMapGenerator mapGenerator, MapTileSpawner spawnMapTile, IMapToWorldMapper mapToWorldMapper ) { var map = mapGenerator.GenerateMap(); map.ForEachTile((x, y, tile) => { var pos = mapToWorldMapper.GetWorldPosition( mapX: x, mapY: y, tile: tile ); spawnMapTile( tile: tile, mapX: x, mapY: y, worldPos: pos ); }); return(map); }