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::{
map_resource::Map,
net::network_manager::{NetworkManager, PeerKind},
net::network_manager::{NetworkManager, Package, PeerKind},
};
pub const GAME_MANAGER_GLOBAL: &str = "GameManagerGlobal";
@ -116,6 +116,15 @@ impl Game {
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) {

View File

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

View File

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