示例#1
0
        private void Read(X360Reader reader)
        {
            StringOffset = reader.ReadInt64();
            StringLength = reader.ReadInt32();
            reader.Skip(4);

            long endPosition = reader.BaseStream.Position;
            reader.BaseStream.Position = StringOffset;
            Value = reader.ReadString(StringLength);
            reader.BaseStream.Position = endPosition;
        }
示例#2
0
文件: FpkFile.cs 项目: emoose/GzsTool
        public override void Read(Stream input)
        {
            X360Reader reader = new X360Reader(input, Encoding.Default, true, false);
            uint magicNumber1 = reader.ReadUInt32(); // foxf
            if (magicNumber1 != FpkMagicNumber)
                return;

            ushort magicNumber2 = reader.ReadUInt16(); // pk
            FpkType = (FpkType) reader.ReadByte(); // ' ' or 'd'
            Platform = reader.ReadAsciiString(3);
            uint fileSize = reader.ReadUInt32();
            reader.Skip(18);

            reader.FlipEndian = IsBigEndianPlatform(Platform);

            UnknownValue = reader.ReadUInt32(); // 2 (4 on some console fpks?)
            uint fileCount = reader.ReadUInt32();
            uint referenceCount = reader.ReadUInt32();
            reader.Skip(4);

            for (int i = 0; i < fileCount; i++)
            {
                Entries.Add(FpkEntry.ReadFpkEntry(reader));
            }

            for (int i = 0; i < referenceCount; i++)
            {
                References.Add(FpkReference.ReadFpkReference(reader));
            }
        }