52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "Formula.h"
|
|
|
|
// Region widths are in tiles (REQ-GW-REGIONS).
|
|
struct WorldRegions
|
|
{
|
|
int asteroidWidth;
|
|
int playerBufferWidth;
|
|
int contestZoneWidth;
|
|
int enemyBufferWidth;
|
|
};
|
|
|
|
// Asteroid expansion (REQ-EXP-UNLOCK, REQ-EXP-COST).
|
|
struct WorldExpansion
|
|
{
|
|
int columnsPerExpansion;
|
|
int costBuildingBlocks;
|
|
};
|
|
|
|
// Push scaling (REQ-PSH-*).
|
|
struct WorldPush
|
|
{
|
|
int pushExpandColumns;
|
|
double scalingFactor;
|
|
};
|
|
|
|
// Wave scheduling (REQ-WAV-*).
|
|
struct WorldWaves
|
|
{
|
|
Formula threatRateFormula; // threat/s as a function of elapsed game-time seconds
|
|
Formula shipLevelFormula; // enemy ship level as a function of elapsed game-time seconds
|
|
double gapMinSeconds;
|
|
double gapMaxSeconds;
|
|
double spawnDurationSeconds;
|
|
};
|
|
|
|
struct WorldConfig
|
|
{
|
|
int heightTiles; // REQ-GW-HEIGHT
|
|
int refundPercentage; // REQ-BLD-DEMOLISH
|
|
int startingBuildingBlocks; // REQ-HQ-STARTING-BLOCKS
|
|
double scrapDespawnSeconds; // REQ-RES-SCRAP-DROP
|
|
double beltSpeedTilesPerSecond; // REQ-GW-BELT-SPEED
|
|
int tunnelMaxDistance; // REQ-BLD-TUNNEL-PAIR
|
|
|
|
WorldRegions regions;
|
|
WorldExpansion expansion;
|
|
WorldPush push;
|
|
WorldWaves waves;
|
|
};
|