/CatalogueRaisonne/CRShared/Source/Network/Messages/ChatMessages.cs

https://github.com/bretambrose/CatalogueRaisonnePublic · C# · 402 lines · 276 code · 63 blank · 63 comment · 2 complexity · d843caac3a339be84d8840d7fd1fd088 MD5 · raw file

  1. /*
  2. ChatMessages.cs
  3. (c) Copyright 2010-2011, Bret Ambrose (mailto:bretambrose@gmail.com).
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Runtime.Serialization;
  18. using System.Text;
  19. using CRShared.Chat;
  20. namespace CRShared
  21. {
  22. [NetworkMessage]
  23. public class CBroadcastToChatChannelMessage : CNetworkMessage
  24. {
  25. // Construction
  26. public CBroadcastToChatChannelMessage( EChannelID channel_id, string chat_message ) :
  27. base()
  28. {
  29. ChannelID = channel_id;
  30. ChatMessage = chat_message;
  31. }
  32. // Methods
  33. public override string ToString()
  34. {
  35. return String.Format( "( [CBroadcastToChatChannelMessage]: ChannelID = {0}, ChatMessage = {1} )", (int) ChannelID, ChatMessage );
  36. }
  37. // Properties
  38. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Broadcast_To_Chat_Channel; } }
  39. public EChannelID ChannelID { get; private set; }
  40. public string ChatMessage { get; private set; }
  41. }
  42. [NetworkMessage]
  43. public class CPlayerChatMessage : CNetworkMessage
  44. {
  45. // Construction
  46. public CPlayerChatMessage( EChannelID channel_id, string player_name, string chat_message ) :
  47. base()
  48. {
  49. ChannelID = channel_id;
  50. PlayerName = player_name;
  51. ChatMessage = chat_message;
  52. }
  53. // Methods
  54. public override string ToString()
  55. {
  56. return String.Format( "( [CPlayerChatMessage]: ChannelID = {0}, PlayerName = {1}, ChatMessage = {2} )", (int) ChannelID, PlayerName, ChatMessage );
  57. }
  58. // Properties
  59. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Player_Chat; } }
  60. public EChannelID ChannelID { get; private set; }
  61. public string PlayerName { get; private set; }
  62. public string ChatMessage { get; private set; }
  63. }
  64. [NetworkMessage]
  65. public class CBroadcastFailureMessage : CNetworkMessage
  66. {
  67. // Construction
  68. public CBroadcastFailureMessage( EChannelBroadcastError error ) :
  69. base()
  70. {
  71. Error = error;
  72. }
  73. // Methods
  74. public override string ToString()
  75. {
  76. return String.Format( "( [CBroadcastFailureMessage]: Error = {0} )", Error.ToString() );
  77. }
  78. // Properties
  79. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Broadcast_Failure; } }
  80. public EChannelBroadcastError Error { get; private set; }
  81. }
  82. [NetworkMessage]
  83. public class CCreateOrJoinChatChannelMessage : CNetworkMessage
  84. {
  85. // Construction
  86. public CCreateOrJoinChatChannelMessage( string channel_name ) :
  87. base()
  88. {
  89. ChannelName = channel_name;
  90. }
  91. // Methods
  92. public override string ToString()
  93. {
  94. return String.Format( "( [CCreateOrJoinChatChannelMessage]: ChannelName = {0} )", ChannelName );
  95. }
  96. // Properties
  97. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Create_Or_Join_Chat_Channel; } }
  98. public string ChannelName { get; private set; }
  99. }
  100. [NetworkMessage]
  101. public class CJoinChatChannelResultMessage : CNetworkMessage
  102. {
  103. // Construction
  104. public CJoinChatChannelResultMessage() :
  105. base()
  106. {
  107. Members = new HashSet< EPersistenceID >();
  108. Gagged = new HashSet< EPersistenceID >();
  109. }
  110. // Methods
  111. // Public interface
  112. public override string ToString()
  113. {
  114. return String.Format( "( [CJoinChatChannelResultMessage]: ChannelID = {0}, CreateError = {1}, JoinError = {2}, ChannelName = {3}, Moderator = {4}, AnnounceJoinLeave = {5}, Members = {6}, Gagged = {7} )",
  115. (int)ChannelID,
  116. CreateError.ToString(),
  117. JoinError.ToString(),
  118. ChannelName,
  119. (long)Moderator,
  120. AnnounceJoinLeave,
  121. CSharedUtils.Build_String_List( Members, n => ((long) n).ToString() ),
  122. CSharedUtils.Build_String_List( Gagged, n => ((long) n).ToString() ) );
  123. }
  124. public void Add_Member( EPersistenceID id ) { Members.Add( id ); }
  125. public void Add_Gagged( EPersistenceID id ) { Gagged.Add( id ); }
  126. // Properties
  127. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Join_Chat_Channel_Result; } }
  128. public EChannelCreationError CreateError { get; set; }
  129. public EChannelJoinError JoinError { get; set; }
  130. public EChannelID ChannelID { get; set; }
  131. public string ChannelName { get; set; }
  132. public EPersistenceID Moderator { get; set; }
  133. public bool AnnounceJoinLeave { get; set; }
  134. public HashSet< EPersistenceID > Members { get; private set; }
  135. public HashSet< EPersistenceID > Gagged { get; private set; }
  136. }
  137. [NetworkMessage]
  138. public class CLeaveChatChannelMessage : CNetworkMessage
  139. {
  140. // Construction
  141. public CLeaveChatChannelMessage( EChannelID channel_id ) :
  142. base()
  143. {
  144. ChannelID = channel_id;
  145. }
  146. // Methods
  147. public override string ToString()
  148. {
  149. return String.Format( "( [CLeaveChatChannelMessage]: ChannelID = {0} )" , (int)ChannelID );
  150. }
  151. // Properties
  152. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Leave_Chat_Channel; } }
  153. public EChannelID ChannelID { get; private set; }
  154. }
  155. [NetworkMessage]
  156. public class CLeaveChatChannelFailureMessage : CNetworkMessage
  157. {
  158. // Construction
  159. public CLeaveChatChannelFailureMessage( ELeaveChatChannelFailureReason reason ) :
  160. base()
  161. {
  162. Reason = reason;
  163. }
  164. // Methods
  165. public override string ToString()
  166. {
  167. return String.Format( "( [CLeaveChatChannelFailureMessage]: Reason = {0} )", Reason.ToString() );
  168. }
  169. // Properties
  170. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Leave_Chat_Channel_Failure; } }
  171. public ELeaveChatChannelFailureReason Reason { get; private set; }
  172. }
  173. [NetworkMessage]
  174. public class CChatClientNotificationMessage : CNetworkMessage
  175. {
  176. // Construction
  177. public CChatClientNotificationMessage( EChannelID channel_id, string target_name, EPersistenceID target_id, EChatNotification chat_event, string source_name ) :
  178. base()
  179. {
  180. ChannelID = channel_id;
  181. TargetName = target_name;
  182. TargetID = target_id;
  183. SourceName = source_name;
  184. ChatEvent = chat_event;
  185. }
  186. // Methods
  187. public override string ToString()
  188. {
  189. return String.Format( "( [CChatClientNotificationMessage]: ChannelID = {0}, Source = {1}, Target = {2}, Event = {3} )",
  190. (int)ChannelID,
  191. SourceName,
  192. TargetName,
  193. ChatEvent.ToString() );
  194. }
  195. // Properties
  196. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Chat_Client_Notification; } }
  197. public EChannelID ChannelID { get; private set; }
  198. public string TargetName { get; private set; }
  199. public string SourceName { get; private set; }
  200. public EChatNotification ChatEvent { get; private set; }
  201. public EPersistenceID TargetID { get; private set; }
  202. }
  203. [NetworkMessage]
  204. public class CLeftChatChannelMessage : CNetworkMessage
  205. {
  206. // Construction
  207. public CLeftChatChannelMessage( EChannelID channel_id, ELeftChannelReason reason, string source_name ) :
  208. base()
  209. {
  210. ChannelID = channel_id;
  211. Reason = reason;
  212. SourceName = source_name;
  213. }
  214. // Methods
  215. public override string ToString()
  216. {
  217. StringBuilder builder = new StringBuilder();
  218. builder.Append( "( [CLeftChatChannelMessage]: ChannelID = " );
  219. builder.Append( (int)ChannelID );
  220. builder.Append( ", Reason = " );
  221. builder.Append( Reason.ToString() );
  222. if ( SourceName != null )
  223. {
  224. builder.Append( ", SourceName = " );
  225. builder.Append( SourceName );
  226. }
  227. builder.Append( ")" );
  228. return builder.ToString();
  229. }
  230. // Properties
  231. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Left_Chat_Channel; } }
  232. public EChannelID ChannelID { get; private set; }
  233. public ELeftChannelReason Reason { get; private set; }
  234. public string SourceName { get; private set; }
  235. }
  236. [NetworkMessage]
  237. public class CChatModOperationMessage : CNetworkMessage
  238. {
  239. // Construction
  240. public CChatModOperationMessage( EChannelID channel_id, EChatModOperation operation, string player_name ) :
  241. base()
  242. {
  243. ChannelID = channel_id;
  244. Operation = operation;
  245. PlayerName = player_name;
  246. }
  247. // Methods
  248. public override string ToString()
  249. {
  250. return String.Format( "( [CChatModOperationMessage]: ChannelID = {0}, Operation = {1}, PlayerName = {2} )", (int)ChannelID, Operation.ToString(), PlayerName );
  251. }
  252. // Properties
  253. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Chat_Mod_Operation; } }
  254. public EChannelID ChannelID { get; private set; }
  255. public EChatModOperation Operation { get; private set; }
  256. public string PlayerName { get; private set; }
  257. }
  258. [NetworkMessage]
  259. public class CChatModOperationErrorMessage : CNetworkMessage
  260. {
  261. // Construction
  262. public CChatModOperationErrorMessage( EChatModOperationError error ) :
  263. base()
  264. {
  265. Error = error;
  266. }
  267. // Methods
  268. public override string ToString()
  269. {
  270. return String.Format( "( [CChatModOperationErrorMessage]: Error = {0} )", Error.ToString() );
  271. }
  272. // Properties
  273. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Chat_Mod_Operation_Error; } }
  274. public EChatModOperationError Error { get; private set; }
  275. }
  276. [NetworkMessage]
  277. public class CPlayerTellMessage : CNetworkMessage
  278. {
  279. // Construction
  280. public CPlayerTellMessage( string player_name, string chat_message ) :
  281. base()
  282. {
  283. PlayerName = player_name;
  284. ChatMessage = chat_message;
  285. }
  286. // Methods
  287. public override string ToString()
  288. {
  289. return String.Format( "( [CPlayerTellMessage]: PlayerName = {0}, ChatMessage = {1} )", PlayerName, ChatMessage );
  290. }
  291. // Properties
  292. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Player_Tell; } }
  293. public string PlayerName { get; private set; }
  294. public string ChatMessage { get; private set; }
  295. }
  296. [NetworkMessage]
  297. public class CPlayerTellRequest : CRequestMessage
  298. {
  299. // Construction
  300. public CPlayerTellRequest( string player_name, string chat_message ) :
  301. base()
  302. {
  303. PlayerName = player_name;
  304. ChatMessage = chat_message;
  305. }
  306. // Methods
  307. public override string ToString()
  308. {
  309. return String.Format( "( [CPlayerTellRequest]: PlayerName = {0}, ChatMessage = {1} )", PlayerName, ChatMessage );
  310. }
  311. // Properties
  312. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Player_Tell_Request; } }
  313. public string PlayerName { get; private set; }
  314. public string ChatMessage { get; private set; }
  315. }
  316. [NetworkMessage]
  317. public class CPlayerTellResponse : CResponseMessage
  318. {
  319. // Construction
  320. public CPlayerTellResponse( EMessageRequestID request_id ) :
  321. base( request_id )
  322. {
  323. }
  324. // Methods
  325. public override string ToString()
  326. {
  327. return String.Format( "( [CPlayerTellRequest]: Error = {0} )", Error.ToString() );
  328. }
  329. // Properties
  330. public override ENetworkMessageType MessageType { get { return ENetworkMessageType.Message_Player_Tell_Response; } }
  331. public ETellError Error { get; set; }
  332. }
  333. }