Add new prints useful to headless server

This commit is contained in:
Sofia 2026-08-14 22:23:40 +03:00
parent 791c879a13
commit 30b64ab475
2 changed files with 52 additions and 6 deletions

View File

@ -29,7 +29,9 @@ impl Chat {
pub fn new_message(&mut self, message: ChatMessage) { pub fn new_message(&mut self, message: ChatMessage) {
self.messages.len() as i64; self.messages.len() as i64;
self.messages.push(message.clone()); 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));
} }
} }

View File

@ -37,7 +37,7 @@ use crate::{
}, },
replay::{ReplayEvent, ReplayPlayback, ReplayRecorder}, replay::{ReplayEvent, ReplayPlayback, ReplayRecorder},
team_resource::TeamResource, team_resource::TeamResource,
ui::cli::CommandLinePanel, ui::cli::{CliColor, CommandLinePanel},
}; };
pub mod commands; pub mod commands;
@ -352,7 +352,9 @@ impl Game {
} }
pub fn start_playback(&mut self, time_delta: f64, spectated_id: u16) { 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 mut playback = ReplayPlayback::new_alloc();
let frame = recorder let frame = recorder
@ -409,6 +411,11 @@ impl Game {
pub fn start_game(&mut self) { pub fn start_game(&mut self) {
self.game_started = true; 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(map) = &self.selected_map {
if let Some(scene) = &map.bind().scene { if let Some(scene) = &map.bind().scene {
self.base().get_tree().change_scene_to_packed(scene); self.base().get_tree().change_scene_to_packed(scene);
@ -430,10 +437,12 @@ impl Game {
} }
}); });
if self.self_id.is_some() {
let recorder = ReplayRecorder::new_alloc(); let recorder = ReplayRecorder::new_alloc();
self.replay_recorder = Some(recorder.clone()); self.replay_recorder = Some(recorder.clone());
self.base_mut().add_child(&recorder); self.base_mut().add_child(&recorder);
} }
}
pub fn reset_game(&mut self) { pub fn reset_game(&mut self) {
if let Some(mut recorder) = self.replay_recorder.take() { if let Some(mut recorder) = self.replay_recorder.take() {
@ -656,6 +665,11 @@ impl Game {
.unwrap_or(0); .unwrap_or(0);
self.try_set_player_team(id, team_with_least as u8); self.try_set_player_team(id, team_with_least as u8);
CommandLinePanel::singleton()
.bind_mut()
.publish_message(format!("Player joined: {}", addr), CliColor::Info);
id id
} }
@ -683,6 +697,17 @@ impl Game {
} }
pub fn remove_player(&mut self, id: u16) { 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) if let Some(player) = self.find_player_mut(id)
&& let Some(mut character) = player.character.take() && 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) { 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) { 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; player.data.name = nick;
} }
self.run_deferred(|s| s.signals().on_players_updated().emit()); self.run_deferred(|s| s.signals().on_players_updated().emit());
@ -908,6 +941,17 @@ impl Game {
self.stop_playback(); 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) if let Some(player) = self.find_player(id)
&& let Some(mut character) = player.character.clone() && let Some(mut character) = player.character.clone()
{ {