Exemplo n.º 1
0
            internal static PlayerState Parse(BinaryReader reader)
            {
                var result = new PlayerState
                {
                    UnknownInt1   = reader.ReadUInt32(),         // 3, 4, 1, 6, 8, 9, 10, 2,
                    UnknownBool1  = reader.ReadBooleanChecked(), // 1, 1, 1, 1, 1, 1,  1, 1,
                    UnknownBool2  = reader.ReadBooleanChecked(), // 1, 1, 2, 3, 3, 3,  3, 1,
                    UnknownBool3  = reader.ReadBooleanChecked(), // 0, 0, 0, 0, 0, 0,  0, 0,
                    ScienceRank   = reader.ReadBytePrefixedAsciiString(),
                    Unknown1      = reader.ReadUInt32(),         // 1
                    Unknown2      = reader.ReadUInt32(),         // 2
                    Unknown3      = reader.ReadUInt32(),         // 1
                    Unknown4      = reader.ReadUInt32(),         // 800
                    Unknown5      = reader.ReadUInt32(),         // 0
                    Name          = reader.ReadBytePrefixedUnicodeString(),
                    UnknownBool4  = reader.ReadBooleanChecked(),
                    MaybePlayerId = reader.ReadByte(),
                    //UnknownBytes = reader.ReadBytes(588)
                };

                var numBuildListItems = reader.ReadUInt16();
                var buildListItems    = new PlayerBuildListItem[numBuildListItems];

                for (var i = 0; i < numBuildListItems; i++)
                {
                    buildListItems[i] = PlayerBuildListItem.Parse(reader);
                }

                return(result);
            }
Exemplo n.º 2
0
            internal static PlayerBuildListItem Parse(BinaryReader reader)
            {
                var version = reader.ReadByte();

                var result = new PlayerBuildListItem
                {
                    BuildingName = reader.ReadBytePrefixedAsciiString(),
                    Name         = reader.ReadBytePrefixedAsciiString(),
                    Position     = reader.ReadVector3()
                };

                var unknown1 = reader.ReadUInt32();

                if (unknown1 != 0u)
                {
                    throw new InvalidDataException();
                }

                var unknown2 = reader.ReadUInt32();

                if (unknown2 != 0u)
                {
                    throw new InvalidDataException();
                }

                result.Angle        = reader.ReadSingle();
                result.UnknownBool1 = reader.ReadBooleanChecked();

                var unknown3 = reader.ReadByte();

                if (unknown3 != 0)
                {
                    throw new InvalidDataException();
                }

                var unknown4 = reader.ReadUInt32();

                if (unknown4 != 0u)
                {
                    throw new InvalidDataException();
                }

                result.Health       = reader.ReadUInt32();
                result.UnknownBool2 = reader.ReadBooleanChecked();
                result.UnknownBool3 = reader.ReadBooleanChecked();
                result.UnknownBool4 = reader.ReadBooleanChecked();
                result.UnknownBool5 = reader.ReadBooleanChecked();
                result.UnknownUInt1 = reader.ReadUInt32();
                result.UnknownUInt2 = reader.ReadUInt32();

                for (var i = 0; i < 51; i++)
                {
                    var unknown5 = reader.ReadByte();
                    if (unknown5 != 0)
                    {
                        throw new InvalidDataException();
                    }
                }

                return(result);
            }