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