use ticks instead of Date when retreating for determinism (#208)

This commit is contained in:
evanpelle
2025-03-10 14:38:41 -07:00
committed by GitHub
parent 4375797d92
commit 9b71c8e78f
+6 -6
View File
@@ -1,13 +1,13 @@
import { Execution, Game, Player, PlayerID } from "../game/Game";
const cancelDelay = 2;
const cancelDelay = 20;
export class RetreatExecution implements Execution {
private active = true;
private retreatOrdered = false;
private player: Player;
private executionDateInSecs = new Date().getTime() / 1000 + cancelDelay;
private startTick: number;
private mg: Game;
constructor(
private playerID: PlayerID,
private attackID: string,
@@ -18,19 +18,19 @@ export class RetreatExecution implements Execution {
console.warn(`RetreatExecution: player ${this.player.id()} not found`);
return;
}
this.mg = mg;
this.player = mg.player(this.playerID);
this.startTick = mg.ticks();
}
tick(ticks: number): void {
const nowInSecs = new Date().getTime() / 1000;
if (!this.retreatOrdered) {
this.player.orderRetreat(this.attackID);
this.retreatOrdered = true;
}
if (nowInSecs >= this.executionDateInSecs) {
if (this.mg.ticks() >= this.startTick + cancelDelay) {
this.player.executeRetreat(this.attackID);
this.active = false;
}