Refactor a bit
This commit is contained in:
parent
11b6691a4e
commit
d251973dd3
@ -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) {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user