diff options
Diffstat (limited to 'server/protocol/src/lib.rs')
-rw-r--r-- | server/protocol/src/lib.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs index db65ddd2..ef28dcca 100644 --- a/server/protocol/src/lib.rs +++ b/server/protocol/src/lib.rs @@ -110,8 +110,7 @@ pub struct Gamedata { pub enum PacketS { Join { name: String, - #[serde(deserialize_with = "deser_i32")] - character: i32, + character: Character, #[serde(default = "chef_class")] class: PlayerClass, #[serde(skip)] // TODO fix bincode can still set id @@ -174,6 +173,16 @@ pub enum PacketS { }, } +#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize, Encode, Decode)] +pub struct Character { + #[serde(deserialize_with = "deser_i32", default)] + pub color: i32, + #[serde(deserialize_with = "deser_i32", default)] + pub hairstyle: i32, + #[serde(deserialize_with = "deser_i32", default)] + pub headwear: i32, +} + fn chef_class() -> PlayerClass { PlayerClass::Chef } @@ -219,7 +228,7 @@ pub enum PacketC { #[bincode(with_serde)] position: Vec2, class: PlayerClass, - character: i32, + character: Character, name: String, }, RemovePlayer { |