OuterMessage.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. using System.Collections.Generic;
  2. using MongoDB.Bson.Serialization.Attributes;
  3. using ProtoBuf;
  4. namespace Model
  5. {
  6. [BsonKnownTypes(typeof(AActorMessage))]
  7. public abstract partial class AMessage
  8. {
  9. }
  10. [BsonKnownTypes(typeof(AActorRequest))]
  11. [ProtoInclude((int)Opcode.C2R_Login, typeof(C2R_Login))]
  12. [ProtoInclude((int)Opcode.C2G_LoginGate, typeof(C2G_LoginGate))]
  13. [ProtoInclude((int)Opcode.C2G_EnterMap, typeof(C2G_EnterMap))]
  14. [ProtoInclude((int)Opcode.C2R_Ping, typeof(C2R_Ping))]
  15. public abstract partial class ARequest : AMessage
  16. {
  17. }
  18. [BsonKnownTypes(typeof(AActorResponse))]
  19. [ProtoInclude((int)Opcode.R2C_Login, typeof(R2C_Login))]
  20. [ProtoInclude((int)Opcode.G2C_LoginGate, typeof(G2C_LoginGate))]
  21. [ProtoInclude((int)Opcode.G2C_EnterMap, typeof(G2C_EnterMap))]
  22. [ProtoInclude((int)Opcode.R2C_Ping, typeof(R2C_Ping))]
  23. public abstract partial class AResponse : AMessage
  24. {
  25. }
  26. [BsonKnownTypes(typeof(Actor_Test))]
  27. [BsonKnownTypes(typeof(AFrameMessage))]
  28. [BsonKnownTypes(typeof(Actor_CreateUnits))]
  29. [BsonKnownTypes(typeof(FrameMessage))]
  30. [ProtoInclude((int)Opcode.FrameMessage, typeof(FrameMessage))]
  31. [ProtoInclude((int)Opcode.AFrameMessage, typeof(AFrameMessage))]
  32. [ProtoInclude((int)Opcode.Actor_CreateUnits, typeof(Actor_CreateUnits))]
  33. public abstract partial class AActorMessage : AMessage
  34. {
  35. }
  36. [BsonKnownTypes(typeof(Actor_TestRequest))]
  37. [BsonKnownTypes(typeof(Actor_TransferRequest))]
  38. public abstract partial class AActorRequest : ARequest
  39. {
  40. }
  41. [BsonKnownTypes(typeof(Actor_TestResponse))]
  42. [BsonKnownTypes(typeof(Actor_TransferResponse))]
  43. public abstract partial class AActorResponse : AResponse
  44. {
  45. }
  46. /// <summary>
  47. /// 帧消息,继承这个类的消息会经过服务端转发
  48. /// </summary>
  49. [ProtoInclude((int)Opcode.Frame_ClickMap, typeof(Frame_ClickMap))]
  50. [BsonKnownTypes(typeof(Frame_ClickMap))]
  51. public abstract partial class AFrameMessage : AActorMessage
  52. {
  53. }
  54. [ProtoContract]
  55. [Message(Opcode.C2R_Login)]
  56. public class C2R_Login: ARequest
  57. {
  58. [ProtoMember(1)]
  59. public string Account;
  60. [ProtoMember(2)]
  61. public string Password;
  62. }
  63. [ProtoContract]
  64. [Message(Opcode.R2C_Login)]
  65. public class R2C_Login: AResponse
  66. {
  67. [ProtoMember(1)]
  68. public string Address { get; set; }
  69. [ProtoMember(2)]
  70. public long Key { get; set; }
  71. }
  72. [ProtoContract]
  73. [Message(Opcode.C2G_LoginGate)]
  74. public class C2G_LoginGate: ARequest
  75. {
  76. [ProtoMember(1)]
  77. public long Key;
  78. }
  79. [ProtoContract]
  80. [Message(Opcode.G2C_LoginGate)]
  81. public class G2C_LoginGate: AResponse
  82. {
  83. [ProtoMember(1)]
  84. public long PlayerId;
  85. }
  86. [Message(Opcode.Actor_Test)]
  87. public class Actor_Test : AActorMessage
  88. {
  89. public string Info;
  90. }
  91. [Message(Opcode.Actor_TestRequest)]
  92. public class Actor_TestRequest : AActorRequest
  93. {
  94. public string request;
  95. }
  96. [Message(Opcode.Actor_TestResponse)]
  97. public class Actor_TestResponse : AActorResponse
  98. {
  99. public string response;
  100. }
  101. [Message(Opcode.Actor_TransferRequest)]
  102. public class Actor_TransferRequest : AActorRequest
  103. {
  104. public int MapIndex;
  105. }
  106. [Message(Opcode.Actor_TransferResponse)]
  107. public class Actor_TransferResponse : AActorResponse
  108. {
  109. }
  110. [ProtoContract]
  111. [Message(Opcode.C2G_EnterMap)]
  112. public class C2G_EnterMap: ARequest
  113. {
  114. }
  115. [ProtoContract]
  116. [Message(Opcode.G2C_EnterMap)]
  117. public class G2C_EnterMap: AResponse
  118. {
  119. [ProtoMember(1)]
  120. public long UnitId;
  121. [ProtoMember(2)]
  122. public int Count;
  123. }
  124. [ProtoContract]
  125. public class UnitInfo
  126. {
  127. [ProtoMember(1)]
  128. public long UnitId;
  129. [ProtoMember(2)]
  130. public int X;
  131. [ProtoMember(3)]
  132. public int Z;
  133. }
  134. [ProtoContract]
  135. [Message(Opcode.Actor_CreateUnits)]
  136. public class Actor_CreateUnits : AActorMessage
  137. {
  138. [ProtoMember(1)]
  139. public List<UnitInfo> Units = new List<UnitInfo>();
  140. }
  141. public struct FrameMessageInfo
  142. {
  143. public long Id;
  144. public AMessage Message;
  145. }
  146. [ProtoContract]
  147. [Message(Opcode.FrameMessage)]
  148. public class FrameMessage : AActorMessage
  149. {
  150. [ProtoMember(1)]
  151. public int Frame;
  152. [ProtoMember(2)]
  153. public List<AFrameMessage> Messages = new List<AFrameMessage>();
  154. }
  155. [ProtoContract]
  156. [Message(Opcode.Frame_ClickMap)]
  157. public class Frame_ClickMap: AFrameMessage
  158. {
  159. [ProtoMember(1)]
  160. public int X;
  161. [ProtoMember(2)]
  162. public int Z;
  163. }
  164. [Message(Opcode.C2M_Reload)]
  165. public class C2M_Reload: ARequest
  166. {
  167. public AppType AppType;
  168. }
  169. [Message(Opcode.M2C_Reload)]
  170. public class M2C_Reload: AResponse
  171. {
  172. }
  173. [ProtoContract]
  174. [Message(Opcode.C2R_Ping)]
  175. public class C2R_Ping: ARequest
  176. {
  177. }
  178. [ProtoContract]
  179. [Message(Opcode.R2C_Ping)]
  180. public class R2C_Ping: AResponse
  181. {
  182. }
  183. }