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); }
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; }