From 46915d1437b6407b1b7d3f86b14570b604cd7405 Mon Sep 17 00:00:00 2001 From: jedarden Date: Sun, 24 May 2026 18:42:38 -0400 Subject: [PATCH] feat(web): add combat_deaths to MatchResult and display in sandbox - Add combat_deaths field to MatchResult interface (types.ts, engine.ts) - Display combat kills count in sandbox match result panel - Combat deaths were already tracked in engine (CombatDeaths []int) but not exposed in the web UI types or displayed to users Closes: bf-2wjo --- web/src/engine.ts | 1 + web/src/pages/sandbox.ts | 7 ++++--- web/src/types.ts | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/web/src/engine.ts b/web/src/engine.ts index f808ff0..b9c175f 100644 --- a/web/src/engine.ts +++ b/web/src/engine.ts @@ -55,6 +55,7 @@ export interface MatchResult { scores: number[]; energy: number[]; bots_alive: number[]; + combat_deaths?: number[]; } export interface GameState { diff --git a/web/src/pages/sandbox.ts b/web/src/pages/sandbox.ts index f314a4d..e81cca6 100644 --- a/web/src/pages/sandbox.ts +++ b/web/src/pages/sandbox.ts @@ -870,9 +870,10 @@ function loadMonaco(): Promise { function formatResult(result: any, replay: any, _numPlayers: number): string { const winnerName = result.winner >= 0 ? replay.players[result.winner].name : 'Draw'; const winnerClass = result.winner === 0 ? 'win' : result.winner >= 0 ? 'loss' : 'draw'; - const scoreRows = replay.players.map((p: any, i: number) => - `
${p.name}: ${result.scores[i]} pts, ${result.bots_alive[i]} bots alive
` - ).join(''); + const scoreRows = replay.players.map((p: any, i: number) => { + const combatDeaths = result.combat_deaths?.[i] ?? 0; + return `
${p.name}: ${result.scores[i]} pts, ${result.bots_alive[i]} bots alive, ${combatDeaths} combat kills
`; + }).join(''); return `
${result.winner >= 0 ? winnerName + ' wins!' : 'Draw'} diff --git a/web/src/types.ts b/web/src/types.ts index 3058bfc..bdd870c 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -25,6 +25,7 @@ export interface MatchResult { scores: number[]; energy: number[]; bots_alive: number[]; + combat_deaths?: number[]; } export interface ReplayPlayer {