public static IncomingMessage GetMessage(PacketV1 packet) { var newIncomingMessage = new IncomingMessage() { PacketType = packet.PacketType, Sender = packet.Sender, Data = packet.Data, }; CreateMessageProcessor(ref newIncomingMessage); return newIncomingMessage; }
/// <summary> /// Helper method to create the appropriate message processor /// </summary> /// <param name="newIncomingMessage"></param> private static void CreateMessageProcessor(ref IncomingMessage newIncomingMessage) { switch (newIncomingMessage.PacketType) { case PacketType.s_UserJoinedRoom: case PacketType.s_UserLeftRoom: case PacketType.s_Chat: case PacketType.s_HostTransfer: case PacketType.s_RoomList: case PacketType.s_BeginGameInitialization: newIncomingMessage.SetMessageProcessor(new RoomMessageProcessor()); break; case PacketType.s_GameStart: case PacketType.s_Dump: case PacketType.s_Peel: case PacketType.s_GameOver: newIncomingMessage.SetMessageProcessor(new GameMessageProcessor()); break; case PacketType.s_UserLoggedIn: case PacketType.s_UserLoggedOut: case PacketType.s_OnlineFriendList: case PacketType.s_FriendList: case PacketType.s_FriendRequests: case PacketType.s_FriendRequestAccepted: case PacketType.s_FriendSearchResults: case PacketType.s_UserStats: case PacketType.s_IsAliasAvailable: newIncomingMessage.SetMessageProcessor(new DataBaseMessageProcessor()); break; case PacketType.s_MatchmakingGameFound: case PacketType.s_MatchmakingGameNotFound: newIncomingMessage.SetMessageProcessor(new MatchmakingMessageProcessor()); break; default: throw new ArgumentException("Message sent from server not recognized."); } }