feat: update debug UI with TurnGameCtx and CTaskTeam new fields
Browse filesCTaskTurnGame inspector gains a collapsible TurnGameCtx section showing:
land_height, sentinels, team_count, _slot_d0, hud_textbox_a/b.
CTaskTeam inspector gains alive_worm_count, last_launched_weapon, pos_x/pos_y.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
crates/openwa-debugui/src/app.rs
CHANGED
|
@@ -3,7 +3,7 @@ use openwa_core::address::va;
|
|
| 3 |
use openwa_core::ddgame::DDGame;
|
| 4 |
use openwa_core::ddgame_wrapper::DDGameWrapper;
|
| 5 |
use openwa_core::rebase::rb;
|
| 6 |
-
use openwa_core::task::{CTask, CTaskCloud, CTaskFire, CTaskMine, CTaskOilDrum, CTaskTeam, CTaskTurnGame, CTaskWorm};
|
| 7 |
|
| 8 |
use crate::log;
|
| 9 |
|
|
@@ -482,6 +482,25 @@ impl DebugApp {
|
|
| 482 |
ui.label("retreat_frm"); ui.label(format!("{}", (*tg).retreat_frames)); ui.end_row();
|
| 483 |
});
|
| 484 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 485 |
}
|
| 486 |
|
| 487 |
// --- CTaskTeam-specific fields ---
|
|
@@ -491,8 +510,12 @@ impl DebugApp {
|
|
| 491 |
.default_open(true)
|
| 492 |
.show(ui, |ui| {
|
| 493 |
egui::Grid::new("team_grid").striped(true).show(ui, |ui| {
|
| 494 |
-
ui.label("team_index");
|
| 495 |
-
ui.label("
|
|
|
|
|
|
|
|
|
|
|
|
|
| 496 |
});
|
| 497 |
});
|
| 498 |
}
|
|
|
|
| 3 |
use openwa_core::ddgame::DDGame;
|
| 4 |
use openwa_core::ddgame_wrapper::DDGameWrapper;
|
| 5 |
use openwa_core::rebase::rb;
|
| 6 |
+
use openwa_core::task::{CTask, CTaskCloud, CTaskFire, CTaskMine, CTaskOilDrum, CTaskTeam, CTaskTurnGame, CTaskWorm, TurnGameCtx};
|
| 7 |
|
| 8 |
use crate::log;
|
| 9 |
|
|
|
|
| 482 |
ui.label("retreat_frm"); ui.label(format!("{}", (*tg).retreat_frames)); ui.end_row();
|
| 483 |
});
|
| 484 |
});
|
| 485 |
+
|
| 486 |
+
let ctx = &(*tg).game_ctx as *const TurnGameCtx;
|
| 487 |
+
egui::CollapsingHeader::new("TurnGameCtx (+0x30)")
|
| 488 |
+
.default_open(false)
|
| 489 |
+
.show(ui, |ui| {
|
| 490 |
+
egui::Grid::new("ctx_grid").striped(true).show(ui, |ui| {
|
| 491 |
+
ui.label("land_height"); ui.label(format!("{:.1}", (*ctx).land_height.to_f32())); ui.end_row();
|
| 492 |
+
ui.label("land_height_2"); ui.label(format!("{:.1}", (*ctx).land_height_2.to_f32())); ui.end_row();
|
| 493 |
+
ui.label("sentinel_18"); ui.label(format!("{}", (*ctx)._sentinel_18)); ui.end_row();
|
| 494 |
+
ui.label("sentinel_28"); ui.label(format!("{}", (*ctx)._sentinel_28)); ui.end_row();
|
| 495 |
+
ui.label("sentinel_38"); ui.label(format!("{}", (*ctx)._sentinel_38)); ui.end_row();
|
| 496 |
+
ui.label("team_count"); ui.label(format!("{}", (*ctx).team_count)); ui.end_row();
|
| 497 |
+
ui.label("_slot_d0"); ui.label(format!("{}", (*ctx)._slot_d0)); ui.end_row();
|
| 498 |
+
let ta = (*ctx)._hud_textbox_a;
|
| 499 |
+
let tb = (*ctx)._hud_textbox_b;
|
| 500 |
+
ui.label("hud_tb_a"); ui.label(if ta == 0 { "(null)".into() } else { format!("{:#010X}", ta) }); ui.end_row();
|
| 501 |
+
ui.label("hud_tb_b"); ui.label(if tb == 0 { "(null)".into() } else { format!("{:#010X}", tb) }); ui.end_row();
|
| 502 |
+
});
|
| 503 |
+
});
|
| 504 |
}
|
| 505 |
|
| 506 |
// --- CTaskTeam-specific fields ---
|
|
|
|
| 510 |
.default_open(true)
|
| 511 |
.show(ui, |ui| {
|
| 512 |
egui::Grid::new("team_grid").striped(true).show(ui, |ui| {
|
| 513 |
+
ui.label("team_index"); ui.label(format!("{}", (*team).team_index)); ui.end_row();
|
| 514 |
+
ui.label("alive_worms"); ui.label(format!("{}", (*team).alive_worm_count)); ui.end_row();
|
| 515 |
+
ui.label("worm_count"); ui.label(format!("{}", (*team).worm_count)); ui.end_row();
|
| 516 |
+
ui.label("last_weapon"); ui.label(format!("{}", (*team).last_launched_weapon)); ui.end_row();
|
| 517 |
+
ui.label("pos_x"); ui.label(format!("{:.2}", (*team).pos_x.to_f32())); ui.end_row();
|
| 518 |
+
ui.label("pos_y"); ui.label(format!("{:.2}", (*team).pos_y.to_f32())); ui.end_row();
|
| 519 |
});
|
| 520 |
});
|
| 521 |
}
|