public override string ToString() { return(MessageType == MsgType.NULL ? String.Empty : MessageType + (MessageType == MsgType.SERVER ? $" - {ServerMessageType.ToString()}" : String.Empty) + (!String.IsNullOrWhiteSpace(Message) ? $": {Message}" : String.Empty)); }
public void DeserializeAndDispatch(byte[] buffer, int bufferSize, int messageId) { ServerMessageType messageType = (ServerMessageType)messageId; allPackets.Trace("[IN] " + messageType.ToString()); #region Deserialize and handle based on messageType { switch (messageType) { case ServerMessageType.SP_MESSAGE: { var msg = MarshalSerialization.Deserialize <mesg_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PLAYER_INFO: { var msg = MarshalSerialization.Deserialize <plyr_info_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_KILLS: { var msg = MarshalSerialization.Deserialize <kills_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PLAYER: { var msg = MarshalSerialization.Deserialize <player_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_TORP_INFO: { var msg = MarshalSerialization.Deserialize <torp_info_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_TORP: { var msg = MarshalSerialization.Deserialize <torp_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PHASER: { var msg = MarshalSerialization.Deserialize <phaser_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PLASMA_INFO: { var msg = MarshalSerialization.Deserialize <plasma_info_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PLASMA: { var msg = MarshalSerialization.Deserialize <plasma_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_WARNING: { var msg = MarshalSerialization.Deserialize <warning_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_MOTD: { var msg = MarshalSerialization.Deserialize <motd_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_YOU: { var msg = MarshalSerialization.Deserialize <you_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_QUEUE: { var msg = MarshalSerialization.Deserialize <queue_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_STATUS: { var msg = MarshalSerialization.Deserialize <status_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PLANET: { var msg = MarshalSerialization.Deserialize <planet_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PICKOK: { var msg = MarshalSerialization.Deserialize <pickok_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_LOGIN: { var msg = MarshalSerialization.Deserialize <login_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_FLAGS: { var msg = MarshalSerialization.Deserialize <flags_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_MASK: { var msg = MarshalSerialization.Deserialize <mask_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PSTATUS: { var msg = MarshalSerialization.Deserialize <pstatus_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_BADVERSION: { var msg = MarshalSerialization.Deserialize <badversion_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_HOSTILE: { var msg = MarshalSerialization.Deserialize <hostile_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_STATS: { var msg = MarshalSerialization.Deserialize <stats_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PL_LOGIN: { var msg = MarshalSerialization.Deserialize <plyr_login_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_RESERVED: { var msg = MarshalSerialization.Deserialize <reserved_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PLANET_LOC: { var msg = MarshalSerialization.Deserialize <planet_loc_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_UDP_REPLY: { var msg = MarshalSerialization.Deserialize <udp_reply_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_SEQUENCE: { var msg = MarshalSerialization.Deserialize <sequence_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_SC_SEQUENCE: { var msg = MarshalSerialization.Deserialize <sc_sequence_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_RSA_KEY: { var msg = MarshalSerialization.Deserialize <rsa_key_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_GENERIC_32: { var msg = MarshalSerialization.Deserialize <generic_32_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_FLAGS_ALL: { var msg = MarshalSerialization.Deserialize <flags_all_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_SHIP_CAP: { var msg = MarshalSerialization.Deserialize <ship_cap_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_REPLY: { var msg = MarshalSerialization.Deserialize <shortreply_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_MESSAGE: { var msg = MarshalSerialization.Deserialize <mesg_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_WARNING: { var msg = MarshalSerialization.Deserialize <warning_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_YOU: { var msg = MarshalSerialization.Deserialize <you_short_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_YOU_SS: { var msg = MarshalSerialization.Deserialize <youss_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_PLAYER: { var msg = MarshalSerialization.Deserialize <player_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_PING: { var msg = MarshalSerialization.Deserialize <ping_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_TORP: { var msg = MarshalSerialization.Deserialize <torp_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_TORP_INFO: { var msg = MarshalSerialization.Deserialize <torp_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } // ! case ServerMessageType.SP_S_8_TORP: { var msg = MarshalSerialization.Deserialize <torp_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } // ! case ServerMessageType.SP_S_PLANET: { var msg = MarshalSerialization.Deserialize <planet_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_SEQUENCE: { var msg = MarshalSerialization.Deserialize <sequence_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } // ! case ServerMessageType.SP_S_PHASER: { var msg = MarshalSerialization.Deserialize <phaser_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_KILLS: { var msg = MarshalSerialization.Deserialize <kills_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_S_STATS: { var msg = MarshalSerialization.Deserialize <stats_s_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_FEATURE: { var msg = MarshalSerialization.Deserialize <feature_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_RANK: { var msg = MarshalSerialization.Deserialize <rank_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.SP_LTD: { var msg = MarshalSerialization.Deserialize <ltd_spacket>(buffer, bufferSize); ClientExecutor.TickDispatcher.Enqueue(() => Handle(msg)); break; } case ServerMessageType.TOTAL_SPACKETS: default: try { l.Warn("[NET] Unknown message type: " + messageType.ToString()); } catch { l.Warn("[NET] Unknown message id: " + messageId); } break; } } #endregion }