export class GameSettings { public player: PlayerSettings = new PlayerSettings(); public upgrades: UpgradeSettings = new UpgradeSettings(); public metaUpgrades: MetaUpgradeSettings = new MetaUpgradeSettings(); public enemyManager: EnemyManagerSettings = new EnemyManagerSettings(); } export class PlayerSettings { public defaultHP = 0; public requiredXP: number[] = []; public speed = 0; public regenerationDelay = 0; public collisionDelay = 0; public weapon: WeaponSettings = new WeaponSettings(); public haloLauncher: HaloLauncherSettings = new HaloLauncherSettings(); public horizontalLauncher: WaveLauncherSettings = new WaveLauncherSettings(); public diagonalLauncher: WaveLauncherSettings = new WaveLauncherSettings(); } export class WeaponSettings { public strikeDelay = 0; public damage = 0; } export class WaveLauncherSettings { public wavesToShootPerUpgrade = 0; public launcher = new ProjectileLauncherSettings(); } export class HaloLauncherSettings { public projectilesToSpawn = 0; public cooldownDivisorPerUpgrade = 0; public launcher = new ProjectileLauncherSettings(); } export class ProjectileLauncherSettings { public projectileLifetime = 0; public projectileSpeed = 0; public wavesToShoot = 0; public wavesDelayMs = 0; public cooldown = 0; } export class UpgradeSettings { public maxWeaponLengthUpgrades = 0; public maxWeaponDamageUpgrades = 0; public maxHorizontalProjectileUpgrades = 0; public maxDiagonalProjectileUpgrades = 0; public maxHaloProjectileUpgrades = 0; public maxRegenerationUpgrades = 0; } export class MetaUpgradeSettings { public healthPointsPerLevel = 0; public bonusDamagePerLevel = 0; public projectilePiercingPerLevel = 0; public movementSpeedPerLevel = 0; public xpBonusPerLevel = 0; public goldBonusPerLevel = 0; } export class EnemyManagerSettings { public enemies: EnemySettings[] = [new EnemySettings()]; public individualEnemySpawners: IndividualEnemySpawnerSettings[] = [new IndividualEnemySpawnerSettings()]; public circularEnemySpawners: CircularEnemySpawnerSettings[] = [new CircularEnemySpawnerSettings()]; public waveEnemySpawners: WaveEnemySpawnerSettings[] = [new WaveEnemySpawnerSettings()]; } export class GeneralEnemySpawnerSettings { public enemyId = ""; public startDelay = 0; public stopDelay = 0; public cooldown = 0; } export class WaveEnemySpawnerSettings { public common = new GeneralEnemySpawnerSettings(); public enemiesToSpawn = 0; } export class CircularEnemySpawnerSettings { public common = new GeneralEnemySpawnerSettings(); public enemiesToSpawn = 0; } export class IndividualEnemySpawnerSettings { public common = new GeneralEnemySpawnerSettings(); } export class EnemySettings { public id = ""; public moveType = ""; public health = 0; public damage = 0; public speed = 0; public lifetime = 0; public xpReward = 0; public goldReward = 0; }