Example #1
0
        public float ReadFloat()
        {
            var a = A.ReadFloat();
            var b = B.ReadFloat();

            Verify(a, b);
            return(a);
        }
Example #2
0
			public void Parse(IBitStream bitstream)
			{
				while (!bitstream.ChunkFinished) {
					var desc = bitstream.ReadProtobufVarInt();
					var wireType = desc & 7;
					var fieldnum = desc >> 3;

					if (wireType == 2) {
						if (fieldnum == 2) {
							VarName = bitstream.ReadProtobufString();
						} else if (fieldnum == 5) {
							DtName = bitstream.ReadProtobufString();
						} else
							throw new InvalidDataException("yes I know we should drop this but we" +
								"probably want to know that they added a new big field");
					} else if (wireType == 0) {
						var val = bitstream.ReadProtobufVarInt();

						switch (fieldnum) {
						case 1:
							Type = val;
							break;
						case 3:
							Flags = val;
							break;
						case 4:
							Priority = val;
							break;
						case 6:
							NumElements = val;
							break;
						case 9:
							NumBits = val;
							break;
						default:
							// silently drop
							break;
						}
					} else if (wireType == 5) {
						var val = bitstream.ReadFloat();

						switch (fieldnum) {
						case 7:
							LowValue = val;
							break;
						case 8:
							HighValue = val;
							break;
						default:
							// silently drop
							break;
						}
					} else
						throw new InvalidDataException();
				}
			}
Example #3
0
        static bool DecodeSpecialFloat(SendTableProperty prop, IBitStream reader, out float result)
        {
            if (prop.Flags.HasFlagFast(SendPropertyFlags.Coord))
            {
                result = ReadBitCoord(reader);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMp))
            {
                result = ReadBitCoordMP(reader, false, false);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpLowPrecision))
            {
                result = ReadBitCoordMP(reader, false, true);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpIntegral))
            {
                result = ReadBitCoordMP(reader, true, false);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.NoScale))
            {
                result = reader.ReadFloat();
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.Normal))
            {
                result = ReadBitNormal(reader);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoord))
            {
                result = ReadBitCellCoord(reader, prop.NumberOfBits, false, false);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordLowPrecision))
            {
                result = ReadBitCellCoord(reader, prop.NumberOfBits, true, false);
                return(true);
            }
            else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordIntegral))
            {
                result = ReadBitCellCoord(reader, prop.NumberOfBits, false, true);
                return(true);
            }
            result = 0;

            return(false);
        }
Example #4
0
        }                                             // length of sigondata in bytes

        public static DemoHeader ParseFrom(IBitStream reader)
        {
            return(new DemoHeader
            {
                Filestamp = reader.ReadCString(8),
                Protocol = reader.ReadSignedInt(32),
                NetworkProtocol = reader.ReadSignedInt(32),
                ServerName = reader.ReadCString(MAX_OSPATH),
                ClientName = reader.ReadCString(MAX_OSPATH),
                MapName = reader.ReadCString(MAX_OSPATH),
                GameDirectory = reader.ReadCString(MAX_OSPATH),
                PlaybackTime = reader.ReadFloat(),
                PlaybackTicks = reader.ReadSignedInt(32),
                PlaybackFrames = reader.ReadSignedInt(32),
                SignonLength = reader.ReadSignedInt(32)
            });
        }
Example #5
0
 public static DemoHeader ParseFrom(IBitStream reader)
 {
     return(new DemoHeader
     {
         Filestamp = reader.ReadCString(8),
         Protocol = reader.ReadSignedInt(32),
         NetworkProtocol = Math.Abs(reader.ReadSignedInt(32)),
         ServerName = reader.ReadCString(MaxOspath),
         ClientName = reader.ReadCString(MaxOspath),
         MapName = reader.ReadCString(MaxOspath),
         GameDirectory = reader.ReadCString(MaxOspath),
         PlaybackTime = Math.Abs(reader.ReadFloat()),
         PlaybackTicks = Math.Abs(reader.ReadSignedInt(32)),
         EventCount = Math.Abs(reader.ReadSignedInt(32)),
         SignonLength = Math.Abs(reader.ReadSignedInt(32))
     });
 }
Example #6
0
        public int SignonLength { get; private set; }				// length of sigondata in bytes

        public static DemoHeader ParseFrom(IBitStream reader)
        {
            return new DemoHeader() {
                Filestamp = reader.ReadCString(8),
                Protocol = reader.ReadSignedInt(32),
				NetworkProtocol = reader.ReadSignedInt(32),
                ServerName = reader.ReadCString(MAX_OSPATH),

                ClientName = reader.ReadCString(MAX_OSPATH),
                MapName = reader.ReadCString(MAX_OSPATH),
                GameDirectory = reader.ReadCString(MAX_OSPATH),
				PlaybackTime = reader.ReadFloat(),

				PlaybackTicks = reader.ReadSignedInt(32),
				PlaybackFrames = reader.ReadSignedInt(32),
				SignonLength = reader.ReadSignedInt(32),
            };
        }
Example #7
0
        public static Split Parse(IBitStream reader)
        {
            return(new Split
            {
                Flags = reader.ReadSignedInt(32),
                viewOrigin = new Vector3(reader.ReadFloat(), reader.ReadFloat(), reader.ReadFloat()),
                viewAngles = QAngle.Parse(reader),
                localViewAngles = QAngle.Parse(reader),

                viewOrigin2 = new Vector3(reader.ReadFloat(), reader.ReadFloat(), reader.ReadFloat()),
                viewAngles2 = QAngle.Parse(reader),
                localViewAngles2 = QAngle.Parse(reader),
            });
        }
Example #8
0
            public void Parse(IBitStream bitstream)
            {
                while (!bitstream.ChunkFinished)
                {
                    var desc     = bitstream.ReadProtobufVarInt();
                    var wireType = desc & 7;
                    var fieldnum = desc >> 3;

                    if (wireType == 2)
                    {
                        if (fieldnum == 2)
                        {
                            VarName = bitstream.ReadProtobufString();
                        }
                        else if (fieldnum == 5)
                        {
                            DtName = bitstream.ReadProtobufString();
                        }
                        else
                        {
                            throw new InvalidDataException("yes I know we should drop this but we" +
                                                           "probably want to know that they added a new big field");
                        }
                    }
                    else if (wireType == 0)
                    {
                        var val = bitstream.ReadProtobufVarInt();

                        switch (fieldnum)
                        {
                        case 1:
                            Type = val;
                            break;

                        case 3:
                            Flags = val;
                            break;

                        case 4:
                            Priority = val;
                            break;

                        case 6:
                            NumElements = val;
                            break;

                        case 9:
                            NumBits = val;
                            break;
                        }
                    }
                    else if (wireType == 5)
                    {
                        var val = bitstream.ReadFloat();

                        switch (fieldnum)
                        {
                        case 7:
                            LowValue = val;
                            break;

                        case 8:
                            HighValue = val;
                            break;
                        }
                    }
                    else
                    {
                        throw new InvalidDataException();
                    }
                }
            }
Example #9
0
        public void Parse(IBitStream bitstream, DemoParser parser)
        {
            Keys = new List <object>();
            while (!bitstream.ChunkFinished)
            {
                var desc     = bitstream.ReadProtobufVarInt();
                var wireType = desc & 7;
                var fieldnum = desc >> 3;
                if (wireType == 2 && fieldnum == 1)
                {
                    EventName = bitstream.ReadProtobufString();
                }
                else if (wireType == 0 && fieldnum == 2)
                {
                    EventId = bitstream.ReadProtobufVarInt();
                }
                else if (wireType == 2 && fieldnum == 3)
                {
                    bitstream.BeginChunk(bitstream.ReadProtobufVarInt() * 8);

                    /*
                     * Hope and pray that gaben is once again nice to us and
                     * sends 'type' first, then the respective member, then NOTHING.
                     */
                    desc     = bitstream.ReadProtobufVarInt();
                    wireType = desc & 7;
                    fieldnum = desc >> 3;
                    if (wireType != 0 || fieldnum != 1)
                    {
                        throw new InvalidDataException("Lord Gaben wasn't nice to us :/");
                    }

                    var typeMember = bitstream.ReadProtobufVarInt();
                    desc     = bitstream.ReadProtobufVarInt();
                    wireType = desc & 7;
                    fieldnum = desc >> 3;

                    if (fieldnum != typeMember + 1)
                    {
                        throw new InvalidDataException("Lord Gaben wasn't nice to us :/ (srsly wtf!?)");
                    }

                    switch (typeMember)
                    {
                    case 1:     // string
                        if (wireType != 2)
                        {
                            throw new InvalidDataException("proto definition differs");
                        }

                        Keys.Add(bitstream.ReadProtobufString());
                        break;

                    case 2:     // float
                        if (wireType != 5)
                        {
                            throw new InvalidDataException("proto definition differs");
                        }

                        Keys.Add(bitstream.ReadFloat());
                        break;

                    case 3:     // long
                    case 4:     // short
                    case 5:     // byte
                        if (wireType != 0)
                        {
                            throw new InvalidDataException("proto definition differs");
                        }

                        Keys.Add(bitstream.ReadProtobufVarInt());
                        break;

                    case 6:     // bool
                        if (wireType != 0)
                        {
                            throw new InvalidDataException("proto definition differs");
                        }

                        Keys.Add(bitstream.ReadProtobufVarInt() != 0);
                        break;

                    default:
                        throw new InvalidDataException("Looks like they introduced a new type");
                    }

                    if (!bitstream.ChunkFinished)
                    {
                        throw new InvalidDataException("Lord Gaben tricked us! D:");
                    }

                    bitstream.EndChunk();
                }
                else
                {
                    throw new InvalidDataException();
                }
            }

            GameEventHandler.Apply(this, parser);
        }
Example #10
0
        public void Parse(IBitStream bitstream, DemoParser parser)
        {
            while (!bitstream.ChunkFinished)
            {
                var desc     = bitstream.ReadProtobufVarInt();
                var wireType = desc & 7;
                var fieldnum = desc >> 3;

                if (wireType == 5)
                {
                    if (fieldnum == 14)
                    {
                        parser.TickInterval = bitstream.ReadFloat();
                    }
                    else
                    {
                        var val = bitstream.ReadInt(32);
                        switch (fieldnum)
                        {
                        case 8:
                            MapCrc = val;
                            break;

                        case 9:
                            ClientCrc = val;
                            break;

                        case 10:
                            StringTableCrc = val;
                            break;
                        }
                    }
                }
                else if (wireType == 2)
                {
                    var val = bitstream.ReadProtobufString();

                    switch (fieldnum)
                    {
                    case 15:
                        GameDir = val;
                        break;

                    case 16:
                        MapName = val;
                        break;

                    case 17:
                        MapGroupName = val;
                        break;

                    case 18:
                        SkyName = val;
                        break;

                    case 19:
                        HostName = val;
                        break;
                    }
                }
                else if (wireType == 0)
                {
                    var val     = bitstream.ReadProtobufVarInt();
                    var boolval = (val == 0) ? false : true;

                    switch (fieldnum)
                    {
                    case 1:
                        Protocol = val;
                        break;

                    case 2:
                        ServerCount = val;
                        break;

                    case 3:
                        IsDedicated = boolval;
                        break;

                    case 4:
                        IsOfficialValveServer = boolval;
                        break;

                    case 5:
                        IsHltv = boolval;
                        break;

                    case 6:
                        IsReplay = boolval;
                        break;

                    case 7:
                        COs = val;
                        break;

                    case 11:
                        MaxClients = val;
                        break;

                    case 12:
                        MaxClasses = val;
                        break;

                    case 13:
                        PlayerSlot = val;
                        break;

                    case 20:
                        PublicIp = (uint)val;
                        break;

                    case 21:
                        IsRedirectingToProxyRelay = boolval;
                        break;

                    case 22:
                        UgcMapId = (uint)val;
                        break;
                    }
                }
            }
        }
Example #11
0
        static bool DecodeSpecialFloat(SendTableProperty prop, IBitStream reader, out float result)
        {
            if (prop.Flags.HasFlagFast(SendPropertyFlags.Coord)) {
                result = ReadBitCoord(reader);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMp)) {
                result = ReadBitCoordMP(reader, false, false);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpLowPrecision)) {
                result = ReadBitCoordMP(reader, false, true);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpIntegral)) {
                result = ReadBitCoordMP(reader, true, false);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.NoScale)) {
                result = reader.ReadFloat();
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.Normal)) {
                result = ReadBitNormal(reader);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoord)) {
                result = ReadBitCellCoord(reader, prop.NumberOfBits, false, false);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordLowPrecision)) {
                result = ReadBitCellCoord(reader, prop.NumberOfBits, true, false);
                return true;
            } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordIntegral)) {
                result = ReadBitCellCoord(reader, prop.NumberOfBits, false, true);
                return true;
            }
            result = 0;

            return false;
        }
Example #12
0
		public void Parse(IBitStream bitstream, DemoParser parser)
		{
			Keys = new List<object>();
			while (!bitstream.ChunkFinished) {
				var desc = bitstream.ReadProtobufVarInt();
				var wireType = desc & 7;
				var fieldnum = desc >> 3;
				if ((wireType == 2) && (fieldnum == 1)) {
					EventName = bitstream.ReadProtobufString();
				} else if ((wireType == 0) && (fieldnum == 2)) {
					EventId = bitstream.ReadProtobufVarInt();
				} else if ((wireType == 2) && (fieldnum == 3)) {
					bitstream.BeginChunk(bitstream.ReadProtobufVarInt() * 8);
					/*
					 * Hope and pray that gaben is once again nice to us and
					 * sends 'type' first, then the respective member, then NOTHING.
					 */
					desc = bitstream.ReadProtobufVarInt();
					wireType = desc & 7;
					fieldnum = desc >> 3;
					if ((wireType != 0) || (fieldnum != 1))
						throw new InvalidDataException("Lord Gaben wasn't nice to us :/");

					var typeMember = bitstream.ReadProtobufVarInt();
					desc = bitstream.ReadProtobufVarInt();
					wireType = desc & 7;
					fieldnum = desc >> 3;

					if (fieldnum != (typeMember + 1))
						throw new InvalidDataException("Lord Gaben wasn't nice to us :/ (srsly wtf!?)");

					switch (typeMember) {
					case 1: // string
						if (wireType != 2)
							throw new InvalidDataException("proto definition differs");
						Keys.Add(bitstream.ReadProtobufString());
						break;
					case 2: // float
						if (wireType != 5)
							throw new InvalidDataException("proto definition differs");
						Keys.Add(bitstream.ReadFloat());
						break;
					case 3: // long
					case 4: // short
					case 5: // byte
						if (wireType != 0)
							throw new InvalidDataException("proto definition differs");
						Keys.Add(bitstream.ReadProtobufVarInt());
						break;
					case 6: // bool
						if (wireType != 0)
							throw new InvalidDataException("proto definition differs");
						Keys.Add(bitstream.ReadProtobufVarInt() != 0);
						break;
					default:
						throw new InvalidDataException("Looks like they introduced a new type");
					}

					if (!bitstream.ChunkFinished)
						throw new InvalidDataException("Lord Gaben tricked us! D:");

					bitstream.EndChunk();
				} else
					throw new InvalidDataException();
			}

			GameEventHandler.Apply(this, parser);
		}
Example #13
0
        public static Vector Parse(IBitStream reader)
        {
            return new Vector
            {
                X = reader.ReadFloat(),
				Y = reader.ReadFloat(),
				Z = reader.ReadFloat(),
            };
        }
Example #14
0
		public static QAngle Parse(IBitStream reader)
        {
            return new QAngle
            {
				X = reader.ReadFloat(),
				Y = reader.ReadFloat(),
				Z = reader.ReadFloat(),
            };
        }