You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
4.3 KiB

  1. using UnityEngine.Networking;
  2. namespace Networking
  3. {
  4. public class LogicProtocols
  5. {
  6. public const short SendLogicList = 200;
  7. public const short SendInventory = 201;
  8. public const short SendRoundTime = 202;
  9. public const short SendNotification = 203;
  10. public const short SendScore = 205;
  11. public const short SendLives = 204;
  12. public class LogicMsg : MessageBase
  13. {
  14. public LogicBlock[] elements;
  15. public LogicMsg() { }
  16. public LogicMsg(LogicBlock[] elements)
  17. {
  18. this.elements = elements;
  19. }
  20. public override void Serialize(NetworkWriter writer)
  21. {
  22. base.Serialize(writer);
  23. writer.Write(elements.Length);
  24. foreach (LogicBlock block in elements)
  25. {
  26. BlockToken token = block.ToToken();
  27. byte[] bytes = Utility.ObjectToByteArray(token);
  28. writer.WriteBytesAndSize(bytes,bytes.Length);
  29. }
  30. }
  31. public override void Deserialize(NetworkReader reader)
  32. {
  33. base.Deserialize(reader);
  34. int count = reader.ReadInt32();
  35. elements = new LogicBlock[count];
  36. for (int i = 0; i < count; i++)
  37. {
  38. BlockToken token = Utility.ByteArrayToObject<BlockToken>(reader.ReadBytesAndSize());
  39. elements[i] = token.ToLogicBlock();
  40. }
  41. }
  42. }
  43. public class InventoryMsg : MessageBase
  44. {
  45. public Inventory.Data[] bagItems;
  46. public InventoryMsg() { }
  47. public InventoryMsg(Inventory inventory)
  48. {
  49. this.bagItems = inventory.BagItems.ToArray();
  50. }
  51. public override void Serialize(NetworkWriter writer)
  52. {
  53. base.Serialize(writer);
  54. writer.Write(bagItems.Length);
  55. foreach(Inventory.Data data in bagItems)
  56. {
  57. BlockToken token = data.element.ToToken();
  58. byte[] bytes = Utility.ObjectToByteArray(token);
  59. writer.WriteBytesAndSize(bytes, bytes.Length);
  60. writer.Write(data.Count);
  61. writer.Write(data.isInfinit);
  62. }
  63. }
  64. public override void Deserialize(NetworkReader reader)
  65. {
  66. base.Deserialize(reader);
  67. int count = reader.ReadInt32();
  68. bagItems = new Inventory.Data[count];
  69. for (int i = 0; i < count; i++)
  70. {
  71. BlockToken token = Utility.ByteArrayToObject<BlockToken>(reader.ReadBytesAndSize());
  72. bagItems[i] = new Inventory.Data();
  73. bagItems[i].element = token.ToLogicBlock();
  74. bagItems[i].Count = reader.ReadInt32();
  75. bagItems[i].isInfinit = reader.ReadBoolean();
  76. }
  77. }
  78. }
  79. public class FloatMsg : MessageBase
  80. {
  81. public float Float;
  82. public FloatMsg() { }
  83. public FloatMsg(float Float)
  84. {
  85. this.Float = Float;
  86. }
  87. public override void Serialize(NetworkWriter writer)
  88. {
  89. base.Serialize(writer);
  90. writer.Write(Float);
  91. }
  92. public override void Deserialize(NetworkReader reader)
  93. {
  94. base.Deserialize(reader);
  95. Float = reader.ReadSingle();
  96. }
  97. }
  98. public class StringMsg : MessageBase
  99. {
  100. public float String;
  101. public StringMsg() { }
  102. public StringMsg(float String)
  103. {
  104. this.String = String;
  105. }
  106. public override void Serialize(NetworkWriter writer)
  107. {
  108. base.Serialize(writer);
  109. writer.Write(String);
  110. }
  111. public override void Deserialize(NetworkReader reader)
  112. {
  113. base.Deserialize(reader);
  114. String = reader.ReadSingle();
  115. }
  116. }
  117. public class EmptyMsg : MessageBase
  118. {
  119. }
  120. }
  121. }