Compare commits

...

2 Commits

Author SHA1 Message Date
6ea9bc27a3 Fix dedicated server not going to lobby instantly 2026-08-15 00:34:23 +03:00
158bd3252d Set headless to host when headless 2026-08-15 00:27:53 +03:00
2 changed files with 20 additions and 9 deletions

View File

@ -1,6 +1,9 @@
use std::net::SocketAddr;
use godot::{classes::Os, prelude::*};
use godot::{
classes::{DisplayServer, Os},
prelude::*,
};
use crate::{
game::{Game, GameManager},
@ -88,7 +91,9 @@ impl INode3D for CliParser {
.connect_other(self, |s| s.on_join_lobby());
if let Some(port) = options.host {
NetworkManager::singleton().bind_mut().host(port, false);
NetworkManager::singleton()
.bind_mut()
.host(port, DisplayServer::singleton().get_name() == "headless");
} else if let Some(addr) = options.join {
NetworkManager::singleton().bind_mut().join_directly(addr);
}

View File

@ -51,13 +51,19 @@ impl IPanel for GameFinishedScreen {
.connect_other(self, Self::save_replay);
}
if let Some(game) = &mut Game::singleton()
&& let Some(recorder) = &mut game.bind_mut().replay_recorder
{
recorder
.signals()
.on_saved()
.connect_other(self, Self::on_replay_saved);
if let Some(game) = &mut Game::singleton() {
if let Some(recorder) = &mut game.bind_mut().replay_recorder {
recorder
.signals()
.on_saved()
.connect_other(self, Self::on_replay_saved);
}
if game.bind().is_host() && game.bind().self_id.is_none() {
game.bind_mut().reset_game();
self.run_deferred(|_| {
GameManager::singleton().bind().go_to_lobby();
});
}
}
if let Some(focus) = &mut self.base_mut().find_next_valid_focus() {