Fix game starting on host privileges

This commit is contained in:
Sofia 2026-08-14 23:12:26 +03:00
parent f32a43a826
commit 5a04e82a11
3 changed files with 22 additions and 1 deletions

View File

@ -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| {

View File

@ -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();
}
}
}
_ => {}
},
},

View File

@ -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();
}
}
}
}