Пример #1
0
 public override string ToString()
 {
     return(MessageType == MsgType.NULL ? String.Empty
         : MessageType + (MessageType == MsgType.SERVER ? $" - {ServerMessageType.ToString()}" : String.Empty) + (!String.IsNullOrWhiteSpace(Message) ? $": {Message}" : String.Empty));
 }
Пример #2
0
        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
        }