Refactor a bit

This commit is contained in:
Sofia 2026-07-17 23:28:28 +03:00
parent 11b6691a4e
commit d251973dd3
3 changed files with 31 additions and 21 deletions

View File

@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
use crate::{ use crate::{
map_resource::Map, map_resource::Map,
net::network_manager::{NetworkManager, PeerKind}, net::network_manager::{NetworkManager, Package, PeerKind},
}; };
pub const GAME_MANAGER_GLOBAL: &str = "GameManagerGlobal"; pub const GAME_MANAGER_GLOBAL: &str = "GameManagerGlobal";
@ -116,6 +116,15 @@ impl Game {
self.base().get_tree().change_scene_to_packed(scene); self.base().get_tree().change_scene_to_packed(scene);
} }
} }
self.run_deferred(|_| {
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
if let PeerKind::Server(peer, _) = peer {
peer.broadcast_reliable(Package::GameStarted);
peer.set_accepting_connections(false);
}
}
});
} }
pub fn set_self(&mut self, id: u16) { pub fn set_self(&mut self, id: u16) {

View File

@ -203,7 +203,6 @@ impl INode for NetworkManager {
} }
Package::GameStarted => { Package::GameStarted => {
if let Some(game) = &mut Game::singleton() { if let Some(game) = &mut Game::singleton() {
godot_print!("Game started");
game.bind_mut().start_game(); game.bind_mut().start_game();
} }
} }

View File

@ -160,28 +160,30 @@ impl LobbyPanel {
} }
pub fn on_ready(&mut self) { pub fn on_ready(&mut self) {
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { let is_host = if let Some(peer) = &NetworkManager::singleton().bind().peer {
match peer { peer.is_host()
PeerKind::Client(peer, socket_addr) => { } else {
self.is_ready = !self.is_ready; false
if let Some(button) = &mut self.ready_button { };
if self.is_ready { if !is_host {
button.set_text("Ready"); self.is_ready = !self.is_ready;
} else { if let Some(button) = &mut self.ready_button {
button.set_text("Not Ready"); if self.is_ready {
} button.set_text("Ready");
} } else {
button.set_text("Not Ready");
}
}
peer.send_reliable(socket_addr, Package::SetReady(0, self.is_ready)); if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
} if let PeerKind::Client(peer, socket_addr) = peer {
PeerKind::Server(peer, _) => { peer.send_reliable(&socket_addr, Package::SetReady(0, self.is_ready));
if let Some(game) = &mut Game::singleton() {
game.bind_mut().start_game();
}
peer.broadcast_reliable(Package::GameStarted);
peer.set_accepting_connections(false);
} }
} }
} else {
if let Some(game) = &mut Game::singleton() {
game.bind_mut().start_game();
}
} }
} }