aboutsummaryrefslogtreecommitdiff
path: root/server/protocol/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-25 15:30:09 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-25 15:55:00 +0200
commit9587d6b4d4389f6108e2be0ff5c0f4a495ff842d (patch)
tree3cc2ea9a93de6dd39acd5396fddfbadafef471cf /server/protocol/src/lib.rs
parent64564a25db65d7a578fee537a0cf91db1a7dbc60 (diff)
downloadhurrycurry-9587d6b4d4389f6108e2be0ff5c0f4a495ff842d.tar
hurrycurry-9587d6b4d4389f6108e2be0ff5c0f4a495ff842d.tar.bz2
hurrycurry-9587d6b4d4389f6108e2be0ff5c0f4a495ff842d.tar.zst
player class decoupled from character id
Diffstat (limited to 'server/protocol/src/lib.rs')
-rw-r--r--server/protocol/src/lib.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs
index b44a55fb..4c2ff3f4 100644
--- a/server/protocol/src/lib.rs
+++ b/server/protocol/src/lib.rs
@@ -95,6 +95,8 @@ pub enum PacketS {
Join {
name: String,
character: i32,
+ #[serde(default = "chef_class")]
+ class: PlayerClass,
#[serde(skip)] // TODO fix bincode can still set id
id: Option<PlayerID>, // used entity bots that cant receive a response
},
@@ -146,6 +148,23 @@ pub enum PacketS {
},
}
+fn chef_class() -> PlayerClass {
+ PlayerClass::Chef
+}
+
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, Encode, Decode, PartialEq, Eq)]
+#[serde(rename_all = "snake_case")]
+pub enum PlayerClass {
+ Chef,
+ Bot,
+ Customer,
+}
+impl PlayerClass {
+ pub fn is_cheflike(&self) -> bool {
+ matches!(self, Self::Bot | Self::Chef)
+ }
+}
+
#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum Message {
@@ -173,6 +192,7 @@ pub enum PacketC {
id: PlayerID,
#[bincode(with_serde)]
position: Vec2,
+ class: PlayerClass,
character: i32,
name: String,
},