]> git.lizzy.rs Git - mt_ser.git/blobdiff - src/to_clt/hud.rs
Implement deserialize for basic types
[mt_ser.git] / src / to_clt / hud.rs
index bdd7de7653df643a23a8c0fc71ac348042640388..3a29d7b50a2a4c2597124691d67f3f57ed31f069 100644 (file)
@@ -115,18 +115,32 @@ pub struct MinimapModePkt {
     modes: Vec<MinimapMode>,
 }
 
+#[cfg(feature = "server")]
 impl MtSerialize for MinimapModePkt {
     fn mt_serialize<C: MtCfg>(&self, writer: &mut impl Write) -> Result<(), SerializeError> {
-        C::write_len(self.modes.len(), writer)?;
+        DefCfg::write_len(self.modes.len(), writer)?;
         self.current.mt_serialize::<DefCfg>(writer)?;
-        for item in self.modes.iter() {
-            item.mt_serialize::<DefCfg>(writer)?;
-        }
+        self.modes.mt_serialize::<NoLen>(writer)?;
+
         Ok(())
     }
 }
+
+#[cfg(feature = "client")]
+impl MtDeserialize for MinimapModePkt {
+    fn mt_deserialize<C: MtCfg>(reader: &mut impl Read) -> Result<Self, DeserializeError> {
+        let range = DefCfg::read_len(reader)?;
+        let current = MtDeserialize::mt_deserialize::<DefCfg>(reader)?;
+        let modes = range
+            .map(|_| MtDeserialize::mt_deserialize::<DefCfg>(reader))
+            .try_collect()?;
+
+        Ok(Self { current, modes })
+    }
+}
+
 /*
-TODO: rustify
+TODO: rustify this
 
 var DefaultMinimap = []MinimapMode{
     {Type: NoMinimap},