summaryrefslogtreecommitdiff
path: root/server/protocol/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-08-10 20:57:06 +0200
committermetamuffin <metamuffin@disroot.org>2024-08-10 20:57:06 +0200
commit7dbb34febaf75572f99fee459a77cf917de05d8f (patch)
tree72ba067aa5003d110f2bb707fb3e9c429388505b /server/protocol/src
parent3d13c85ec2e3acbee249b4baf20797cc38a8a121 (diff)
downloadhurrycurry-7dbb34febaf75572f99fee459a77cf917de05d8f.tar
hurrycurry-7dbb34febaf75572f99fee459a77cf917de05d8f.tar.bz2
hurrycurry-7dbb34febaf75572f99fee459a77cf917de05d8f.tar.zst
Change protocol and server to allow multiple players per connection (untested)
Diffstat (limited to 'server/protocol/src')
-rw-r--r--server/protocol/src/lib.rs15
-rw-r--r--server/protocol/src/movement.rs13
2 files changed, 13 insertions, 15 deletions
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs
index 02c6d0b1..a56b6edb 100644
--- a/server/protocol/src/lib.rs
+++ b/server/protocol/src/lib.rs
@@ -88,8 +88,11 @@ pub enum PacketS {
name: String,
character: i32,
},
- Leave,
+ Leave {
+ player: PlayerID,
+ },
Movement {
+ player: PlayerID,
#[bincode(with_serde)]
direction: Vec2,
boosting: bool,
@@ -97,15 +100,12 @@ pub enum PacketS {
pos: Option<Vec2>,
},
Interact {
- #[bincode(with_serde)]
- pos: Option<IVec2>,
- },
- Collide {
player: PlayerID,
#[bincode(with_serde)]
- force: Vec2,
+ pos: Option<IVec2>,
},
Communicate {
+ player: PlayerID,
message: Option<Message>,
persist: bool,
},
@@ -114,6 +114,7 @@ pub enum PacketS {
#[bincode(skip)]
/// For internal use only
ReplaceHand {
+ player: PlayerID,
item: Option<ItemIndex>,
},
/// For use in replay sessions only
@@ -138,7 +139,7 @@ pub enum PacketC {
major: u32,
supports_bincode: bool,
},
- Init {
+ Joined {
id: PlayerID,
},
Data {
diff --git a/server/protocol/src/movement.rs b/server/protocol/src/movement.rs
index 286c7f6a..5525c5e6 100644
--- a/server/protocol/src/movement.rs
+++ b/server/protocol/src/movement.rs
@@ -17,7 +17,7 @@
*/
use crate::{
glam::{IVec2, Vec2},
- PacketS,
+ PacketS, PlayerID,
};
use std::collections::HashSet;
@@ -48,13 +48,7 @@ impl MovementBase {
rotation: 0.,
}
}
- pub fn update(
- &mut self,
- map: &HashSet<IVec2>,
- direction: Vec2,
- mut boost: bool,
- dt: f32,
- ) -> PacketS {
+ pub fn update(&mut self, map: &HashSet<IVec2>, direction: Vec2, mut boost: bool, dt: f32) {
let direction = direction.clamp_length_max(1.);
if direction.length() > 0.1 {
self.facing = direction + (self.facing - direction) * (-dt * 10.).exp();
@@ -73,11 +67,14 @@ impl MovementBase {
self.position += self.velocity * dt;
self.velocity *= (-dt * PLAYER_FRICTION).exp();
collide_player_tiles(self, map);
+ }
+ pub fn movement_packet(&self, direction: Vec2, player: PlayerID) -> PacketS {
PacketS::Movement {
pos: Some(self.position),
boosting: self.boosting,
direction,
+ player,
}
}