From 5a04e82a110db47f0afac0695719d7e81c9240c3 Mon Sep 17 00:00:00 2001 From: Sofia Date: Fri, 14 Aug 2026 23:12:26 +0300 Subject: [PATCH] Fix game starting on host privileges --- rust/src/game/mod.rs | 4 ++++ rust/src/net/protocol.rs | 11 +++++++++++ rust/src/ui/lobby.rs | 8 +++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/rust/src/game/mod.rs b/rust/src/game/mod.rs index 65b99c4..8103ad3 100644 --- a/rust/src/game/mod.rs +++ b/rust/src/game/mod.rs @@ -363,6 +363,10 @@ impl Game { self.is_host || self.host_privileges } + pub fn is_host(&self) -> bool { + self.is_host + } + pub fn set_ready(&mut self, ready: bool) { if let Some(self_id) = self.self_id { self.run_deferred(move |s| { diff --git a/rust/src/net/protocol.rs b/rust/src/net/protocol.rs index 5b7d62f..91b9bef 100644 --- a/rust/src/net/protocol.rs +++ b/rust/src/net/protocol.rs @@ -557,6 +557,17 @@ impl NetworkManager { } } } + Package::GameStarted => { + if let Some(game) = &mut Game::singleton() { + let player = + game.bind().find_player_by_addr(&conn.address).cloned(); + if let Some(player) = player + && player.has_host_privileges + { + game.bind_mut().start_game(); + } + } + } _ => {} }, }, diff --git a/rust/src/ui/lobby.rs b/rust/src/ui/lobby.rs index f66baa0..31e4aac 100644 --- a/rust/src/ui/lobby.rs +++ b/rust/src/ui/lobby.rs @@ -397,7 +397,13 @@ impl LobbyPanel { } } else { if let Some(game) = &mut Game::singleton() { - game.bind_mut().start_game(); + if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer + && let PeerKind::Client(peer, addr) = peer + { + peer.send_reliable(addr, Package::GameStarted); + } else { + game.bind_mut().start_game(); + } } } }