From 30b64ab475ce45a979d173cf99ee39071565dafa Mon Sep 17 00:00:00 2001 From: Sofia Date: Fri, 14 Aug 2026 22:23:40 +0300 Subject: [PATCH] Add new prints useful to headless server --- rust/src/chat.rs | 4 +++- rust/src/game/mod.rs | 54 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/rust/src/chat.rs b/rust/src/chat.rs index 6e4e430..a1d8cc8 100644 --- a/rust/src/chat.rs +++ b/rust/src/chat.rs @@ -29,7 +29,9 @@ impl Chat { pub fn new_message(&mut self, message: ChatMessage) { self.messages.len() as i64; self.messages.push(message.clone()); - self.run_deferred(move |s| s.signals().on_new_message().emit(&message.as_label())); + let label = message.as_label(); + godot_print_rich!("{}", label.get_text()); + self.run_deferred(move |s| s.signals().on_new_message().emit(&label)); } } diff --git a/rust/src/game/mod.rs b/rust/src/game/mod.rs index c77a936..71055ae 100644 --- a/rust/src/game/mod.rs +++ b/rust/src/game/mod.rs @@ -37,7 +37,7 @@ use crate::{ }, replay::{ReplayEvent, ReplayPlayback, ReplayRecorder}, team_resource::TeamResource, - ui::cli::CommandLinePanel, + ui::cli::{CliColor, CommandLinePanel}, }; pub mod commands; @@ -352,7 +352,9 @@ impl Game { } pub fn start_playback(&mut self, time_delta: f64, spectated_id: u16) { - if let Some(recorder) = &self.replay_recorder { + if let Some(recorder) = &self.replay_recorder + && self.self_id.is_some() + { let mut playback = ReplayPlayback::new_alloc(); let frame = recorder @@ -409,6 +411,11 @@ impl Game { pub fn start_game(&mut self) { self.game_started = true; + + CommandLinePanel::singleton() + .bind_mut() + .publish_message("Game started".to_owned(), CliColor::Info); + if let Some(map) = &self.selected_map { if let Some(scene) = &map.bind().scene { self.base().get_tree().change_scene_to_packed(scene); @@ -430,9 +437,11 @@ impl Game { } }); - let recorder = ReplayRecorder::new_alloc(); - self.replay_recorder = Some(recorder.clone()); - self.base_mut().add_child(&recorder); + if self.self_id.is_some() { + let recorder = ReplayRecorder::new_alloc(); + self.replay_recorder = Some(recorder.clone()); + self.base_mut().add_child(&recorder); + } } pub fn reset_game(&mut self) { @@ -656,6 +665,11 @@ impl Game { .unwrap_or(0); self.try_set_player_team(id, team_with_least as u8); + + CommandLinePanel::singleton() + .bind_mut() + .publish_message(format!("Player joined: {}", addr), CliColor::Info); + id } @@ -683,6 +697,17 @@ impl Game { } pub fn remove_player(&mut self, id: u16) { + if let Some(player) = self.find_player(id) { + CommandLinePanel::singleton().bind_mut().publish_message( + format!( + "Player {} disconnected ({})", + player.id(), + player.connection_addr + ), + CliColor::Info, + ); + } + if let Some(player) = self.find_player_mut(id) && let Some(mut character) = player.character.take() { @@ -697,6 +722,14 @@ impl Game { pub fn update_player_nick(&mut self, player_id: u16, nick: String) { if let Some(player) = self.players.iter_mut().find(|p| p.id() == player_id) { + CommandLinePanel::singleton().bind_mut().publish_message( + format!( + "Player nick changed {} -> {} ({})", + player.data.name, nick, player.connection_addr + ), + CliColor::Info, + ); + player.data.name = nick; } self.run_deferred(|s| s.signals().on_players_updated().emit()); @@ -908,6 +941,17 @@ impl Game { self.stop_playback(); } + if let Some(player) = self.find_player(id) { + CommandLinePanel::singleton().bind_mut().publish_message( + format!( + "Player spawned {} ({})", + player.id(), + player.connection_addr + ), + CliColor::Info, + ); + } + if let Some(player) = self.find_player(id) && let Some(mut character) = player.character.clone() {