From c79614a937c07c09fff05779c60fcc25335f6528 Mon Sep 17 00:00:00 2001 From: bijx Date: Sat, 10 Jan 2026 03:21:04 -0500 Subject: [PATCH] transport ship now has eta --- src/client/graphics/layers/EventsDisplay.ts | 30 ++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/client/graphics/layers/EventsDisplay.ts b/src/client/graphics/layers/EventsDisplay.ts index 2b66f3336..a2bf88c1d 100644 --- a/src/client/graphics/layers/EventsDisplay.ts +++ b/src/client/graphics/layers/EventsDisplay.ts @@ -907,17 +907,35 @@ export class EventsDisplay extends LitElement implements Layer { `; } + private estimateBoatEtaSeconds(boat: UnitView): number | null { + const targetTile = boat.targetTile(); + if (targetTile === undefined) { + return null; + } + + const distance = this.game.manhattanDist(boat.tile(), targetTile); + if (!Number.isFinite(distance) || distance < 0) { + return null; + } + + const secondsPerTick = + this.game.config().serverConfig().turnIntervalMs() / 1000; + return Math.ceil(distance * secondsPerTick); + } + private renderBoats() { return html` ${this.outgoingBoats.length > 0 ? html`
- ${this.outgoingBoats.map( - (boat) => html` + ${this.outgoingBoats.map((boat) => { + const etaSeconds = this.estimateBoatEtaSeconds(boat); + return html`
${this.renderButton({ - content: html`${translateText("events_display.boat")}: - ${renderTroops(boat.troops())}`, + content: html`${translateText("events_display.boat")}: ${renderTroops( + boat.troops(), + )}${etaSeconds !== null ? html` (${etaSeconds}s)` : ""}`, onClick: () => this.emitGoToUnitEvent(boat), className: "text-left text-blue-400", translate: false, @@ -935,8 +953,8 @@ export class EventsDisplay extends LitElement implements Layer { )}...)`}
- `, - )} + `; + })}
` : ""}