コード例 #1
0
        protected virtual bool HandlePayloadType(Payloads.Types payloadType, PayloadPrefix payload, PayloadWriter writer)
        {
            Program.LogDebug($" --- Payload received: {payloadType} ---");
            payload.Serialize(Logger);

            switch (payloadType)
            {
            case Payloads.Types.VersionCheck:
                HandleVersionCheck((VersionCheck)payload, writer);
                return(true);

            case Payloads.Types.Login:
                HandleLogin((Login)payload, writer);
                return(true);

            case Payloads.Types.RegisterUser:
                HandleRegisterUser((RegisterUser)payload, writer);
                return(true);

            case Payloads.Types.LoginUser:
                HandleLoginUser((LoginUser)payload, writer);
                return(true);

            case Payloads.Types.LoginServer:
                HandleLoginServer((LoginServer)payload, writer);
                return(true);

            default:
                return(false);
            }
        }
コード例 #2
0
        protected sealed override void HandleMessage(BinaryReader reader, BinaryWriter writer)
        {
            reader.BaseStream.Seek(0, SeekOrigin.Begin);

            PayloadReader payloadReader = new PayloadReader(reader);
            PayloadWriter payloadWriter = new PayloadWriter(writer);

            PayloadPrefix prefix = new PayloadPrefix();

            prefix.Serialize(payloadReader);


            if (prefix.Magic == PayloadPrefix.PayloadMagic)
            {
                if (prefix.Type1 != prefix.Type2)
                {
                    Program.Log($" Corrupt payload type, first is {prefix.Type1:X04} but second is {prefix.Type2:X04}");
                }

                Payloads.Types payloadType = (Payloads.Types)prefix.Type2;
                PayloadPrefix  payload     = Payloads.CreatePayload(payloadType);

                reader.BaseStream.Seek(0, SeekOrigin.Begin);
                payload.Serialize(payloadReader);

                HandlePayloadType(payloadType, payload, payloadWriter);
            }
            else if (prefix.Magic == ChatPayloadPrefix.PayloadMagic)
            {
                if (prefix.Type1 != 0)
                {
                    Program.Log($" Corrupt payload chatTypes, is {prefix.Type1:X04} but expected 0");
                }

                ChatPayloads.ChatTypes chatPayloadType = (ChatPayloads.ChatTypes)prefix.Type2;
                ChatPayloadPrefix      chatPayload     = ChatPayloads.CreateChatPayload(chatPayloadType);

                reader.BaseStream.Seek(0, SeekOrigin.Begin);
                chatPayload.Serialize(payloadReader);

                HandleChatPayloadType(chatPayloadType, chatPayload, payloadWriter);
            }
            else
            {
                Program.Log($" Incorrect payload magic, is {prefix.Magic:X04} but should be {PayloadPrefix.PayloadMagic:X04}");
            }
        }
コード例 #3
0
        protected sealed override bool HandlePayloadType(Payloads.Types payloadType, PayloadPrefix payload, PayloadWriter writer)
        {
            if (base.HandlePayloadType(payloadType, payload, writer))
            {
                return(true);
            }

            switch (payloadType)
            {
            case Payloads.Types.LoginChat:
                HandleLoginChat((LoginChat)payload, writer);
                return(true);

            case Payloads.Types.VerifyChatLogin:
                HandleVerifyChatLogin((VerifyChatLogin)payload, writer);
                return(true);

            default:
                return(false);
            }
        }
コード例 #4
0
        protected sealed override bool HandlePayloadType(Payloads.Types payloadType, PayloadPrefix payload, PayloadWriter writer)
        {
            if (base.HandlePayloadType(payloadType, payload, writer))
            {
                return(true);
            }

            switch (payloadType)
            {
            case Payloads.Types.RegisterNickname:
                HandleRegisterNickname((RegisterNickname)payload, writer);
                return(true);

            case Payloads.Types.ConfirmNickname:
                HandleConfirmNickname((ConfirmNickname)payload, writer);
                return(true);

            case Payloads.Types.GetCDKeys:
                HandleGetCdKeys((GetCDKeys)payload, writer);
                return(true);

            case Payloads.Types.GetWelcomeMsg:
                HandleGetWelcomeMsg((GetWelcomeMsg)payload, writer);
                return(true);

            case Payloads.Types.GetUserInfo:
                HandleGetUserInfo((GetUserInfo)payload, writer);
                return(true);

            case Payloads.Types.GetPlayerInfo:
                HandleGetCharacterInfo((GetPlayerInfo)payload, writer);
                return(true);

            case Payloads.Types.GetChatServer:
                HandleGetChatServer((GetChatServer)payload, writer);
                return(true);

            case Payloads.Types.SelectNickname:
                HandleSelectNickname((SelectNickname)payload, writer);
                return(true);

            case Payloads.Types.RegisterServer:
                HandleRegisterServer((RegisterServer)payload, writer);
                return(true);

            case Payloads.Types.GetServers:
                HandleGetServers((GetServers)payload, writer);
                return(true);

            case Payloads.Types.StopServerUpdates:
                HandleStopServerUpdates((StopServerUpdates)payload, writer);
                return(true);

            case Payloads.Types.UnknownType056:
                HandlePayload056((Payload56)payload, writer);
                return(true);

            case Payloads.Types.UnknownType157:
                HandlePayload157((Payload157)payload, writer);
                return(true);

            case Payloads.Types.ConnectToServer:
                HandleConnectToServer((ConnectToServer)payload, writer);
                return(true);

            case Payloads.Types.UpdateServerInfo:
                HandleUpdateServerInfo((UpdateServerInfo)payload, writer);
                return(true);

            default:
                return(false);
            }
        }