diff options
Diffstat (limited to 'server/src/server.rs')
| -rw-r--r-- | server/src/server.rs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/server/src/server.rs b/server/src/server.rs index dc63f1b5..267b3062 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -42,13 +42,15 @@ use std::{ sync::Arc, time::{Duration, Instant}, }; -use tokio::sync::broadcast::Sender; +use tokio::sync::{broadcast, mpsc}; -#[derive(Debug, Default)] +#[derive(Debug)] pub struct ConnectionData { pub players: HashSet<PlayerID>, pub idle: bool, pub ready: bool, + pub last_player_input: f32, + pub replies: mpsc::Sender<PacketC>, } pub enum AnnounceState { @@ -59,7 +61,7 @@ pub enum AnnounceState { pub struct Server { pub tick_perf: (Duration, usize), - pub tx: Sender<PacketC>, + pub broadcast: broadcast::Sender<PacketC>, pub connections: HashMap<ConnectionID, ConnectionData>, pub paused: bool, pub announce_state: AnnounceState, @@ -130,7 +132,6 @@ impl GameServerExt for Game { timer: Option<Duration>, packet_out: &mut VecDeque<PacketC>, ) { - // TODO cleanup let players = self .players .iter() @@ -312,12 +313,12 @@ impl GameServerExt for Game { } impl Server { - pub fn new(data_path: PathBuf, tx: Sender<PacketC>) -> Result<Self> { + pub fn new(data_path: PathBuf, tx: broadcast::Sender<PacketC>) -> Result<Self> { Ok(Self { game: Game::default(), tick_perf: (Duration::ZERO, 0), index: DataIndex::new(data_path).context("Failed to load data index")?, - tx, + broadcast: tx, announce_state: AnnounceState::Done, packet_out: VecDeque::new(), connections: HashMap::new(), |