mirror of
https://github.com/MartinKral/Slash-The-Hordes
synced 2024-12-25 11:18:54 +00:00
62 lines
2.4 KiB
TypeScript
62 lines
2.4 KiB
TypeScript
import { CCInteger, Component, _decorator } from "cc";
|
|
import { AppRoot } from "../AppRoot/AppRoot";
|
|
import { GameRunner } from "../Menu/GameRunner";
|
|
import { delay } from "../Services/Utils/AsyncUtils";
|
|
import { GameSettings, ISpawner } from "./Data/GameSettings";
|
|
import { UserData } from "./Data/UserData";
|
|
import { Game } from "./Game";
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass("TestGameRunner")
|
|
export class TestGameRunner extends Component {
|
|
@property(CCInteger) private startTime = 0;
|
|
@property(CCInteger) private startXP = 0;
|
|
|
|
@property(CCInteger) private maxHpLevel = 0;
|
|
@property(CCInteger) private bonusDamageLevel = 0;
|
|
@property(CCInteger) private projectilePiercingLevel = 0;
|
|
@property(CCInteger) private movementSpeedLevel = 0;
|
|
@property(CCInteger) private xpGathererLevel = 0;
|
|
@property(CCInteger) private goldGathererLevel = 0;
|
|
|
|
public start(): void {
|
|
if (GameRunner.Instance.IsRunning) return;
|
|
this.playTestGameAsync();
|
|
}
|
|
|
|
public async playTestGameAsync(): Promise<void> {
|
|
while (Game.Instance == null || AppRoot.Instance == null) await delay(100);
|
|
|
|
const testUserData = new UserData();
|
|
testUserData.game.metaUpgrades.healthLevel = this.maxHpLevel;
|
|
testUserData.game.metaUpgrades.overallDamageLevel = this.bonusDamageLevel;
|
|
testUserData.game.metaUpgrades.projectilePiercingLevel = this.projectilePiercingLevel;
|
|
testUserData.game.metaUpgrades.movementSpeedLevel = this.movementSpeedLevel;
|
|
testUserData.game.metaUpgrades.xpGathererLevel = this.xpGathererLevel;
|
|
testUserData.game.metaUpgrades.goldGathererLevel = this.goldGathererLevel;
|
|
|
|
const settings = this.getTimeModifiedSettings(AppRoot.Instance.Settings);
|
|
Game.Instance.play(testUserData, settings, AppRoot.Instance.TranslationData, { startTime: this.startTime, startXP: this.startXP });
|
|
}
|
|
|
|
private getTimeModifiedSettings(settings: GameSettings): GameSettings {
|
|
const spawners: ISpawner[] = [
|
|
...settings.enemyManager.circularEnemySpawners,
|
|
...settings.enemyManager.individualEnemySpawners,
|
|
...settings.enemyManager.waveEnemySpawners
|
|
];
|
|
|
|
for (const spawner of spawners) {
|
|
spawner.common.startDelay -= this.startTime;
|
|
spawner.common.stopDelay -= this.startTime;
|
|
}
|
|
|
|
return settings;
|
|
}
|
|
}
|
|
|
|
export class TestValues {
|
|
public startTime = 0;
|
|
public startXP = 0;
|
|
}
|