diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 8bf9a5b..24042be 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -18,7 +18,6 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let i18n = use_i18n(); let vs = state.view_state.clone(); - let message = format!("{}", vs.message); let player_id = state.player_id; let is_my_turn = vs.active_mp_player == Some(player_id); let is_move_stage = is_my_turn @@ -352,9 +351,6 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Player score (below board) ──────────────────────────────────── -
- {format!("{message}")} -
// ── Game-over overlay ───────────────────────────────────────────── {stage_is_ended.then(|| { diff --git a/client_web/src/trictrac/backend.rs b/client_web/src/trictrac/backend.rs index 7d60873..486c3b9 100644 --- a/client_web/src/trictrac/backend.rs +++ b/client_web/src/trictrac/backend.rs @@ -167,7 +167,8 @@ impl BackEndArchitecture for TrictracBackend moves: (m1, m2), }; if self.game.validate(&event) { - self.game.debug_message = format!("Event {:?} validated", event); + let message = format!("Event {:?} validated on {:?}", event, self.game); + console_log(message); let _ = self.game.consume(&event); self.drive_automatic_stages(); } @@ -331,3 +332,20 @@ mod tests { .any(|c| matches!(c, BackendCommand::TerminateRoom))); } } + +// ── Public API: WASM delegates to `inner`, other targets are no-ops ─────────── + +#[cfg(target_arch = "wasm32")] +mod inner { + use web_sys::console; + + pub fn console_log(message: String) { + console::log_1(&message.into()); + } +} + +#[cfg(target_arch = "wasm32")] +pub use inner::console_log; + +#[cfg(not(target_arch = "wasm32"))] +pub fn console_log(message: String) {} diff --git a/client_web/src/trictrac/types.rs b/client_web/src/trictrac/types.rs index 927584e..f431482 100644 --- a/client_web/src/trictrac/types.rs +++ b/client_web/src/trictrac/types.rs @@ -43,7 +43,6 @@ pub struct ViewState { pub dice_jans: Vec, /// Last two checker moves played; default when no move has occurred yet. pub dice_moves: (CheckerMove, CheckerMove), - pub message: String, } /// One scoring event from a dice roll. @@ -87,7 +86,6 @@ impl ViewState { dice: (0, 0), dice_jans: Vec::new(), dice_moves: (CheckerMove::default(), CheckerMove::default()), - message: "".into(), } } @@ -186,7 +184,6 @@ impl ViewState { dice: (gs.dice.values.0, gs.dice.values.1), dice_jans, dice_moves: gs.dice_moves, - message: gs.get_debug_message(), } } }