feat(simulator): Implement PvP combat tracking in tournament_bench for performance benchmarking

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-04-10 09:26:26 -07:00
parent e230192b11
commit f434f4283f

View file

@ -351,8 +351,8 @@ fn run_match(grid: &GridState, p0: &ProfileJson, p1: &ProfileJson, turns: u32, s
let mut p0_pvp_kills: u32 = 0;
let mut p1_pvp_kills: u32 = 0;
let p0_cities_captured: u32 = 0;
let p1_cities_captured: u32 = 0;
let mut p0_cities_captured: u32 = 0;
let mut p1_cities_captured: u32 = 0;
let mut victory_winner: Option<u8> = None;
let mut victory_type: Option<VictoryType> = None;
let mut victory_turn: Option<u32> = None;
@ -360,13 +360,24 @@ fn run_match(grid: &GridState, p0: &ProfileJson, p1: &ProfileJson, turns: u32, s
for turn_num in 1..=turns {
let result = processor.step(&mut state);
// PvP combat tracking: count fauna kills by player. Full PvP
// combat (inter-player) isn't in the bench processor yet — these
// counters stay at zero until mc-combat integration lands.
for evt in &result.fauna_combat_log {
if !evt.unit_survived {
if evt.player_index == 0 { p0_pvp_kills += 1; }
else { p1_pvp_kills += 1; }
// PvP combat tracking from the CombatResolver-based PvP phase.
for evt in &result.pvp_combat_log {
if !evt.attacker_survived {
// Attacker died — count as a kill for the defender's player.
if evt.attacker_player == 0 { p1_pvp_kills += 1; }
else { p0_pvp_kills += 1; }
}
if !evt.defender_survived {
// Defender died — count as a kill for the attacker's player.
if evt.defender_player == 0 { p1_pvp_kills += 1; }
else { p0_pvp_kills += 1; }
}
}
// Also track city captures from siege events.
for evt in &result.siege_log {
if evt.captured {
if evt.attacker_player == 0 { p0_cities_captured += 1; }
else { p1_cities_captured += 1; }
}
}