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

View File

@ -51,13 +51,19 @@ impl IPanel for GameFinishedScreen {
.connect_other(self, Self::save_replay); .connect_other(self, Self::save_replay);
} }
if let Some(game) = &mut Game::singleton() if let Some(game) = &mut Game::singleton() {
&& let Some(recorder) = &mut game.bind_mut().replay_recorder if let Some(recorder) = &mut game.bind_mut().replay_recorder {
{ recorder
recorder .signals()
.signals() .on_saved()
.on_saved() .connect_other(self, Self::on_replay_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() { if let Some(focus) = &mut self.base_mut().find_next_valid_focus() {