Slash-The-Hordes/assets/Scripts/Game/Data/GameSettings.ts
2022-12-26 18:49:48 +01:00

139 lines
4.2 KiB
TypeScript

import { EnemyProjectileLauncher } from "../Unit/Enemy/ProjectileLauncher.cs/EnemyProjectileLauncher";
export class GameSettings {
public player: PlayerSettings = new PlayerSettings();
public upgrades: UpgradeSettings = new UpgradeSettings();
public metaUpgrades: MetaUpgradesSettings = new MetaUpgradesSettings();
public enemyManager: EnemyManagerSettings = new EnemyManagerSettings();
public items: ItemSettings = new ItemSettings();
}
export class PlayerSettings {
public defaultHP = 0;
public requiredXP: number[] = [];
public speed = 0;
public regenerationDelay = 0;
public collisionDelay = 0;
public magnetDuration = 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 EnemyLauncherSettings {
public enemyIds: string[] = [];
public projectileLifetime = 0;
public projectileSpeed = 0;
public projectileDamage = 0;
public cooldown = 0;
}
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 MetaUpgradesSettings {
public health = new MetaUpgradeSettings();
public overallDamage = new MetaUpgradeSettings();
public projectilePiercing = new MetaUpgradeSettings();
public movementSpeed = new MetaUpgradeSettings();
public xpGatherer = new MetaUpgradeSettings();
public goldGatherer = new MetaUpgradeSettings();
}
export class MetaUpgradeSettings {
public costs: number[] = [];
public bonuses: number[] = [];
}
export class EnemyManagerSettings {
public axeLauncher = new EnemyLauncherSettings();
public magicOrbLauncher = new EnemyLauncherSettings();
public enemies: EnemySettings[] = [new EnemySettings()];
public periodicFollowMovers: PeriodicFollowMoverSettings[] = [new PeriodicFollowMoverSettings()];
public individualEnemySpawners: IndividualEnemySpawnerSettings[] = [new IndividualEnemySpawnerSettings()];
public circularEnemySpawners: CircularEnemySpawnerSettings[] = [new CircularEnemySpawnerSettings()];
public waveEnemySpawners: WaveEnemySpawnerSettings[] = [new WaveEnemySpawnerSettings()];
}
export class PeriodicFollowMoverSettings {
public enemyIdToAffect = "";
public followTime = 0;
public waitTime = 0;
}
export class GeneralEnemySpawnerSettings {
public enemyId = "";
public startDelay = 0;
public stopDelay = 0;
public cooldown = 0;
}
export class WaveEnemySpawnerSettings implements ISpawner {
public common = new GeneralEnemySpawnerSettings();
public enemiesToSpawn = 0;
}
export class CircularEnemySpawnerSettings implements ISpawner {
public common = new GeneralEnemySpawnerSettings();
public enemiesToSpawn = 0;
}
export class IndividualEnemySpawnerSettings implements ISpawner {
public common = new GeneralEnemySpawnerSettings();
}
export interface ISpawner {
common: GeneralEnemySpawnerSettings;
}
export class EnemySettings {
public id = "";
public moveType = "";
public graphicsType = "";
public health = 0;
public damage = 0;
public speed = 0;
public lifetime = 0;
public xpReward = 0;
public goldReward = 0;
public healthPotionRewardChance = 0;
public magnetRewardChance = 0;
public chestRewardChance = 0;
}
export class ItemSettings {
public healthPerPotion = 0;
}