示例#1
0
            public void ReadFromFile(BinaryReader reader)
            {
                short length = reader.ReadInt16();

                cutsceneName = new string(reader.ReadChars(length));
                byte[] unkBytes1 = reader.ReadBytes(5);
                gcsSize = reader.ReadInt32();

                long start = reader.BaseStream.Position;

                gcsData = new GCSData();
                gcsData.ReadFromFile(reader);
                return;

                reader.BaseStream.Seek(start, SeekOrigin.Begin);
                byte[] unkBytes2 = reader.ReadBytes(gcsSize - 4);
                int    spdSize   = reader.ReadInt32();

                if (spdSize == 0)
                {
                    if (reader.BaseStream.Position == reader.BaseStream.Length)
                    {
                        Console.WriteLine("Succesfully hit eof");
                    }
                    return;
                }
                start   = reader.BaseStream.Position;
                spdData = new SPDData();
                spdData.ReadFromFile(reader);
                reader.BaseStream.Seek(start, SeekOrigin.Begin);
                byte[] unkBytes3 = reader.ReadBytes(spdSize);
            }
示例#2
0
            public void ReadFromFile(BinaryReader reader)
            {
                short length = reader.ReadInt16();

                CutsceneName = new string(reader.ReadChars(length));

                if (!Directory.Exists("CutsceneInfo/" + CutsceneName))
                {
                    Directory.CreateDirectory("CutsceneInfo/" + CutsceneName);
                }

                unk05   = reader.ReadBytes(5);
                gcsSize = reader.ReadInt32();

                long start = reader.BaseStream.Position;

                AssetContent = new GCSData();
                AssetContent.ReadFromFile(reader, CutsceneName);

                bool hasSPD = reader.ReadBoolean();

                if (hasSPD)
                {
                    SoundContent = new SPDData();
                    SoundContent.ReadFromFile(reader, CutsceneName);
                }

                // TODO: Figure out the actual way of detecting this.
                // Get vehicle data.. if it is an absurd value we know its a GCR.
                int numGCR = reader.ReadInt32();

                if (numGCR > 0xFF)
                {
                    reader.BaseStream.Position -= 4;
                    return;
                }

                VehicleContent = new GCRData[numGCR];

                for (int i = 0; i < numGCR; i++)
                {
                    VehicleContent[i] = new GCRData();
                    VehicleContent[i].ReadFromFile(reader);
                }
                return;
            }