aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-11 22:16:32 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-11 22:16:42 +0100
commit6c27e7dcf3baf89aa3146635f71de8980db94b43 (patch)
treea7280ef3d075f6cfe66827353ddab58336a1940d /server
parent0533310feadd076be01e4b1747ab4a7e53fccce8 (diff)
downloadhurrycurry-6c27e7dcf3baf89aa3146635f71de8980db94b43.tar
hurrycurry-6c27e7dcf3baf89aa3146635f71de8980db94b43.tar.bz2
hurrycurry-6c27e7dcf3baf89aa3146635f71de8980db94b43.tar.zst
clean up player join code
Diffstat (limited to 'server')
-rw-r--r--server/protocol/src/movement.rs1
-rw-r--r--server/src/server.rs33
2 files changed, 16 insertions, 18 deletions
diff --git a/server/protocol/src/movement.rs b/server/protocol/src/movement.rs
index 062c250d..521de924 100644
--- a/server/protocol/src/movement.rs
+++ b/server/protocol/src/movement.rs
@@ -28,6 +28,7 @@ const BOOST_FACTOR: f32 = 2.5;
const BOOST_DURATION: f32 = 0.3;
const BOOST_RESTORE: f32 = 0.5;
+#[derive(Debug, Clone)]
pub struct MovementBase {
pub input_direction: Vec2,
pub input_boost: bool,
diff --git a/server/src/server.rs b/server/src/server.rs
index b3cd2922..012f9753 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -146,7 +146,6 @@ pub trait GameServerExt {
class: PlayerClass,
serverdata: &PrivateGamedata,
custom_position: Option<Vec2>,
- packet_out: Option<&mut VecDeque<PacketC>>,
);
}
impl GameServerExt for Game {
@@ -181,11 +180,12 @@ impl GameServerExt for Game {
self.set_item(pos, *item);
}
}
- for (id, (name, character, class)) in players {
- self.join_player(id, name, character, class, serverdata, None, None);
- }
packet_out.extend(self.prime_client());
+
+ for (id, (name, character, class)) in players {
+ self.join_player(id, name, character, class, serverdata, None);
+ }
}
fn join_player(
@@ -196,7 +196,6 @@ impl GameServerExt for Game {
class: PlayerClass,
serverdata: &PrivateGamedata,
custom_position: Option<Vec2>,
- packet_out: Option<&mut VecDeque<PacketC>>,
) {
let position = custom_position.unwrap_or(match class {
PlayerClass::Customer => serverdata.customer_spawn.unwrap_or(serverdata.chef_spawn),
@@ -218,15 +217,13 @@ impl GameServerExt for Game {
},
);
self.score.players = self.score.players.max(self.players.len());
- if let Some(packet_out) = packet_out {
- packet_out.push_back(PacketC::AddPlayer {
- id,
- name,
- class,
- position,
- character,
- });
- }
+ self.events.push_back(PacketC::AddPlayer {
+ id,
+ position,
+ class,
+ character,
+ name,
+ });
}
}
@@ -332,7 +329,6 @@ impl Server {
class,
&self.priv_gamedata,
position,
- Some(&mut self.packet_out),
);
if let Some(conn) = conn {
info!("{player} joined (owned by {conn})");
@@ -550,9 +546,10 @@ impl Server {
.query(pos1, 2., |p2, _pos2| {
if p1 != p2
&& let [Some(a), Some(b)] = self.game.players.get_disjoint_mut([&p1, &p2])
- && a.movement.collide(&mut b.movement, dt) {
- a.movement_input_changed = true;
- }
+ && a.movement.collide(&mut b.movement, dt)
+ {
+ a.movement_input_changed = true;
+ }
})
});