public static class ItemSerializer
public static void WriteItem(this NetworkWriter writer, Item item)
if (item is Weapon weapon)
writer.WriteByte(WEAPON);
writer.WriteString(weapon.name);
writer.WritePackedInt32(weapon.hitPoints);
else if (item is Armor armor)
writer.WriteString(armor.name);
writer.WritePackedInt32(armor.hitPoints);
writer.WritePackedInt32(armor.level);
public static Item ReadItem(this NetworkReader reader)
byte type = reader.ReadByte();
name = reader.ReadString(),
hitPoints = reader.ReadPackedInt32()
name = reader.ReadString(),
hitPoints = reader.ReadPackedInt32(),
level = reader.ReadPackedInt32()
throw new Exception(quot;Invalid weapon type {type}");