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) {
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));
}
}

View File

@ -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,10 +437,12 @@ impl Game {
}
});
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) {
if let Some(mut recorder) = self.replay_recorder.take() {
@ -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()
{