コード例 #1
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_sounds(BitBuffer bb)
        {
            var r      = bb.ReadBoolean();
            var sounds = r ? 1 : bb.ReadBits(8);
            var b      = r ? (int)bb.ReadUnsignedBits(8) : (int)bb.ReadUnsignedBits(16);

            bb.SeekBits(b);
        }
コード例 #2
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_entitymessage(BitBuffer bb)
        {
            bb.ReadUnsignedBits(MAX_EDICT_BITS);
            bb.ReadBits(MAX_SERVER_CLASS_BITS);
            var b = (int)bb.ReadUnsignedBits(11);

            bb.SeekBits(b);
        }
コード例 #3
0
ファイル: Packet.cs プロジェクト: Jukspa/DemoSplicer
        private static bool IsSoundReliable(BitBuffer bb)
        {
            var r      = bb.ReadBoolean();
            var sounds = r ? 1 : bb.ReadBits(8);
            var b      = r ? (int)bb.ReadUnsignedBits(8) : (int)bb.ReadUnsignedBits(16);

            bb.SeekBits(b);

            return(r);
        }
コード例 #4
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_menu(BitBuffer bb)
        {
            bb.ReadBits(16);
            var b = (int)bb.ReadUnsignedBits(16);

            bb.SeekBits(b << 3);
        }
コード例 #5
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_tempentities(BitBuffer bb)
        {
            bb.ReadBits(8);
            var b = (int)bb.ReadUnsignedBits(17);

            bb.SeekBits(b);
        }
コード例 #6
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_sendtable(BitBuffer bb)
        {
            bb.ReadBoolean();
            var n = (int)bb.ReadUnsignedBits(16);

            bb.SeekBits(n);
        }
コード例 #7
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_usermessage(BitBuffer bb)
        {
            bb.ReadBits(8);
            var b = (int)bb.ReadUnsignedBits(11);

            bb.SeekBits(b);
        }
コード例 #8
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_gameeventlist(BitBuffer bb)
        {
            bb.ReadBits(MAX_EVENT_BITS);
            var b = (int)bb.ReadUnsignedBits(20);

            bb.SeekBits(b);
        }
コード例 #9
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_voicedata(BitBuffer bb)
        {
            bb.ReadBits(8);
            bb.ReadBits(8);
            var b = (int)bb.ReadUnsignedBits(16);

            bb.SeekBits(b);
        }
コード例 #10
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_updatestringtable(BitBuffer bb)
        {
            bb.ReadBits(5);
            var sound = (bb.ReadBoolean() ? bb.ReadBits(16) : 1);
            var b     = (int)bb.ReadUnsignedBits(20);

            bb.SeekBits(b);
        }
コード例 #11
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void net_setconvar(BitBuffer bb)
        {
            int n = (int)bb.ReadUnsignedBits(8);

            while (n-- > 0)
            {
                bb.ReadString();
                bb.ReadString();
            }
        }
コード例 #12
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_packetentities(BitBuffer bb)
        {
            bb.ReadBits(MAX_EDICT_BITS);
            var isDelta = bb.ReadBoolean();
            int deltaTick;

            if (isDelta)
            {
                deltaTick = bb.ReadInt32();
            }
            bool baseline = bb.ReadBoolean();             // Is baseline?

            bb.ReadBits(MAX_EDICT_BITS);
            var b = (int)bb.ReadUnsignedBits(DELTASIZE_BITS);

            bb.ReadBoolean();
            bb.SeekBits(b);
        }
コード例 #13
0
ファイル: Packet.cs プロジェクト: Jukspa/DemoSplicer
        private static int GetDeltaTick(BitBuffer bb)
        {
            bb.ReadBits(MAX_EDICT_BITS);
            var isDelta = bb.ReadBoolean();

            if (isDelta)
            {
                return(bb.ReadInt32());
            }
            bool baseline = bb.ReadBoolean();             // Is baseline?

            bb.ReadBits(MAX_EDICT_BITS);
            var b = (int)bb.ReadUnsignedBits(DELTASIZE_BITS);

            bb.ReadBoolean();
            bb.SeekBits(b);

            return(-1);
        }
コード例 #14
0
ファイル: Packet.cs プロジェクト: Jukspa/DemoSplicer
        private static bool IsDeltaBaseline(BitBuffer bb)
        {
            bb.ReadBits(MAX_EDICT_BITS);
            var isDelta   = bb.ReadBoolean();
            int deltaFrom = -1;

            if (isDelta)
            {
                deltaFrom = bb.ReadInt32();
            }
            bool baseline = bb.ReadBoolean();             // Is baseline?

            bb.ReadBits(MAX_EDICT_BITS);
            var b = (int)bb.ReadUnsignedBits(DELTASIZE_BITS);

            bb.ReadBoolean();
            bb.SeekBits(b);

            return(baseline);
        }
コード例 #15
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        public void Parse()
        {
            try
            {
                int type = 0;
                var bb   = new BitBuffer(Data);
                while (bb.BitsLeft > NetMessageBits && !ShouldStop)
                {
                    var dataBitWriter        = new BitWriterDeluxe();
                    var withoutTypeBitWriter = new BitWriterDeluxe();
                    int startIndex           = bb.CurrentBit;

                    type = (int)bb.ReadUnsignedBits(NetMessageBits);
                    MessageTypeRead?.Invoke(this, new MessageReceivedEventArgs(type, bb));
                    int withoutTypeIndex = bb.CurrentBit;

                    MsgHandler handler;
                    if (Handlers.TryGetValue((uint)type, out handler))
                    {
                        handler(bb);
                        dataBitWriter.WriteRangeFromArray(Data, startIndex, bb.CurrentBit);
                        withoutTypeBitWriter.WriteRangeFromArray(Data, withoutTypeIndex, bb.CurrentBit);

                        var bytes  = dataBitWriter.Data;
                        var bytes2 = withoutTypeBitWriter.Data;
                        MessageRead?.Invoke(this, new DataReadEventArgs(bytes, dataBitWriter, bytes2, withoutTypeBitWriter, type));
                    }
                    else
                    {
                        throw new Exception("Unknown packet type found.");
                    }
                }

                PacketSuccessfullyRead?.Invoke(this, new EventArgs());
            }
            catch (Exception e)
            {
                ExceptionThrown?.Invoke(this, new ExceptionEventArgs(e));
            }
        }
コード例 #16
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_gameevent(BitBuffer bb)
        {
            var b = (int)bb.ReadUnsignedBits(11);

            bb.SeekBits(b);
        }
コード例 #17
0
ファイル: PacketReader.cs プロジェクト: Jukspa/DemoSplicer
        private void svc_cmdkeyvalues(BitBuffer bb)
        {
            var b = (int)bb.ReadUnsignedBits(32);

            bb.SeekBits(b);
        }