mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 14:00:54 +00:00
use ticks instead of Date when retreating for determinism (#208)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user