aboutsummaryrefslogtreecommitdiff
path: root/server/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/state.rs')
-rw-r--r--server/src/state.rs18
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 { .. }