コード例 #1
0
        public void AddMessageHandlers(HalfLifeDemoParser parser)
        {
            this.parser = parser;

            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_event, MessageEvent);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_sound, MessageSound);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_serverinfo, MessageServerInfo);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_updateuserinfo, MessageUpdateUserInfo);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_deltadescription, MessageDeltaDescription);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_clientdata, MessageClientData);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_pings, MessagePings);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_spawnbaseline, MessageSpawnBaseline);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_newusermsg, MessageNewUserMsg);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_packetentities, MessagePacketEntities);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_deltapacketentities, MessageDeltaPacketEntities);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_resourcelist, MessageResourceList);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_hltv, MessageHltv);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_director, MessageDirector);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_voiceinit, MessageVoiceInit);
            parser.AddMessageHandler((Byte)HalfLifeDemoParser.MessageId.svc_timescale, MessageTimeScale);
            parser.AddUserMessageHandler("ClCorpse", MessageClCorpse);
            parser.AddUserMessageHandler("ScreenFade", MessageScreenFade);
            parser.AddUserMessageHandler("SendAudio", MessageSendAudio);
            parser.AddUserMessageHandler("TextMsg", MessageTextMsg);

            Procedure <String> removeMessage = (s) =>
            {
                Int32 startOffset   = parser.BitBuffer.CurrentByte;
                Int32 messageLength = parser.FindUserMessageLength(s);
                Int32 endOffset     = parser.BitBuffer.CurrentByte + messageLength;
                parser.Seek(startOffset - 1, SeekOrigin.Begin);
                parser.BitBuffer.RemoveBytes(endOffset - startOffset + 1);
            };

            parser.AddUserMessageHandler("CDChallenge", () =>
            {
                removeMessage("CDChallenge");
            });

            parser.AddUserMessageHandler("CDSalt", () =>
            {
                removeMessage("CDSalt");
            });
        }