From 058cf69c19fd05741494861896b86a0de6087240 Mon Sep 17 00:00:00 2001 From: szymon Date: Tue, 18 Aug 2026 22:13:39 +0200 Subject: [PATCH] feat: remove max_connections from server config --- src/network/server.rs | 16 +++++++++++----- src/settings/server_settings.rs | 3 --- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/network/server.rs b/src/network/server.rs index f432450..ec6fc8b 100644 --- a/src/network/server.rs +++ b/src/network/server.rs @@ -26,6 +26,12 @@ use crate::{ settings::{general_settings::SettingsLike, server_settings::ServerSettings}, }; +const MAX_PLAYABLE_CONNECTIONS: usize = 2; // DON'T EVER CHANGE THIS AS GAME OF CHECKERS HAS ONLY TWO PLAYERS, U +// UNDERSTAND???? +// +// There will be a spectator mode, hence the name __PLAYABLE__ connection. You will be able to have +// more connections, but they won't be able to play + #[derive(PartialEq)] enum ServerStage { Lobby, @@ -143,7 +149,7 @@ impl Server { tokio::select! { new_client_opt = self.welcoming_reciever.as_mut().expect("Welcoming reciever was not set. Was the server started?").recv() => { if let Some((addr, sender)) = new_client_opt { - if self.state.stage == ServerStage::Lobby && self.connections.keys().len() < self.settings.max_connections && !self.settings.allow_spectators { + if self.state.stage == ServerStage::Lobby && self.connections.keys().len() < MAX_PLAYABLE_CONNECTIONS && !self.settings.allow_spectators { let identity = NetworkServerIdentity::new(sender); self.connections.insert(addr, identity); self.request_handshake(addr).await; @@ -216,7 +222,7 @@ impl Server { } } - if names.len() != self.settings.max_connections { + if names.len() != MAX_PLAYABLE_CONNECTIONS { error!("Tried starting the game, but could not gather enough ready player names"); return; } @@ -312,11 +318,11 @@ impl Server { self.state.ready_count += 1; info!( "{} signaled readiness. Currently ready: {}/{}", - addr, self.state.ready_count, self.settings.max_connections + addr, self.state.ready_count, MAX_PLAYABLE_CONNECTIONS ); self.connections.get_mut(&addr).expect("Couldn't get the identity of the ready player. I guess this should never happen so i'm panicking like a little bitch").identity.is_ready = true; // TODO! This sometimes happens for some reason (when there is a game going, both player leave and someone tries to join) - if self.state.ready_count == self.settings.max_connections { + if self.state.ready_count == MAX_PLAYABLE_CONNECTIONS { info!("All players are ready! Changing state to ServerStage::Game"); self.state.stage = ServerStage::Game; self.start_game().await; @@ -472,7 +478,7 @@ impl Server { self.state.ready_count -= 1; info!( "Currently {}/{} players are ready", - self.state.ready_count, self.settings.max_connections + self.state.ready_count, MAX_PLAYABLE_CONNECTIONS ); } self.connections.remove(&addr); diff --git a/src/settings/server_settings.rs b/src/settings/server_settings.rs index a065ce1..bb0a6df 100644 --- a/src/settings/server_settings.rs +++ b/src/settings/server_settings.rs @@ -11,7 +11,6 @@ use crate::settings::general_settings::{DEFAULT_URL, SettingsLike}; #[derive(Serialize, Deserialize)] pub struct ServerSettings { pub addr: SocketAddr, - pub max_connections: usize, pub allow_spectators: bool, } @@ -19,8 +18,6 @@ impl Default for ServerSettings { fn default() -> Self { Self { addr: DEFAULT_URL, - max_connections: 2, // Maybe this should be a const somewhere in the server code? It - // makes no sense to have different value than this allow_spectators: false, } }