diff options
Diffstat (limited to 'server/src/state.rs')
| -rw-r--r-- | server/src/state.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/server/src/state.rs b/server/src/state.rs index aa46f47c..f26275e3 100644 --- a/server/src/state.rs +++ b/server/src/state.rs @@ -22,7 +22,7 @@ use crate::{ use anyhow::Result; use hurrycurry_data::build_gamedata; use hurrycurry_locale::{TrError, tre, trm}; -use hurrycurry_protocol::{KEEPALIVE_INTERVAL, Menu, Message, PacketC, PacketS, PlayerID, VERSION}; +use hurrycurry_protocol::{KEEPALIVE_INTERVAL, Menu, Message, PacketC, PacketS, PlayerID, version}; use log::{debug, info, trace, warn}; use std::{ collections::HashSet, @@ -98,6 +98,7 @@ impl Server { } self.packet_out.extend(self.game.events.drain(..)); + self.packet_out.extend(self.vote_state.packet_out.drain(..)); while let Some(p) = self.packet_out.pop_front() { if matches!(p, PacketC::UpdateMap { .. } | PacketC::Movement { .. }) { trace!("-> {p:?}"); @@ -120,15 +121,9 @@ impl Server { let mut init = self.game.prime_client(); let (replies_tx, replies_rx) = mpsc::channel(1024); let broadcast_rx = self.broadcast.subscribe(); - init.insert( - 0, - PacketC::Version { - major: VERSION.0, - minor: VERSION.1, - supports_bincode: true, - }, - ); + init.insert(0, version()); init.insert(1, PacketC::ServerData(Box::new(*self.data.clone()))); + self.vote_state.prime_client(&mut init); self.connections.insert( id, ConnectionData { @@ -225,7 +220,8 @@ impl Server { } _ => (), } - self.packet_in(Some(conn), packet, &mut replies)?; + + self.packet_in(&mut replies, packet)?; for p in &replies { if let PacketC::Joined { id } = p { @@ -312,6 +308,8 @@ fn get_packet_player(packet: &PacketS) -> Option<PlayerID> { | PacketS::Interact { player, .. } | PacketS::Communicate { player, .. } | PacketS::ReplaceHand { player, .. } + | PacketS::InitiateVote { player, .. } + | PacketS::CastVote { player, .. } | PacketS::Effect { player, .. } => Some(*player), PacketS::Join { .. } | PacketS::Idle { .. } |