protected override void LoadAllData(DataBuffer file) { int dataSize = 0; dataSize += ReadBlock(file); SimpleVars = WorkBuff.ReadObject <SimpleVariables>(FileFormat); Scripts = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); PedPool = LoadType <PedPool>(); dataSize += ReadBlock(file); Garages = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); GameLogic = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Vehicles = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Objects = LoadType <ObjectPool>(); dataSize += ReadBlock(file); Paths = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Cranes = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Pickups = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); PhoneInfo = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); RestartPoints = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); RadarBlips = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Zones = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Gangs = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); CarGenerators = LoadType <CarGeneratorData>(); dataSize += ReadBlock(file); ParticleObjects = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); AudioScriptObjects = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); ScriptPaths = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); PlayerInfo = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Stats = LoadType <Stats>(); dataSize += ReadBlock(file); SetPieces = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); Streaming = LoadTypePreAlloc <Dummy>(); dataSize += ReadBlock(file); PedTypeInfo = LoadTypePreAlloc <Dummy>(); // Skip over padding int numPaddingBlocks = 0; while (file.Position < file.Length - 4) { dataSize += ReadBlock(file); numPaddingBlocks++; } // Size checks int expectedDataSize = DataSize; int expectedFileSize = expectedDataSize + ((NumOuterBlocks + numPaddingBlocks) * sizeof(int)) + sizeof(int); Debug.Assert(expectedDataSize == dataSize); Debug.Assert(expectedFileSize == file.Length); Debug.WriteLine("Load successful!"); }
protected override void LoadAllData(DataBuffer file) { int dataSize = 0; int numOuterBlocks; if (FileFormat.IsPS2) { dataSize += ReadBlock(file); SimpleVars = WorkBuff.ReadObject <SimpleVariables>(FileFormat); Scripts = LoadType <ScriptData>(); PlayerPeds = LoadType <PedPool>(); Garages = LoadType <GarageData>(); Vehicles = LoadType <VehiclePool>(); dataSize += ReadBlock(file); Objects = LoadType <ObjectPool>(); Paths = LoadTypePreAlloc <PathData>(); Cranes = LoadType <CraneData>(); dataSize += ReadBlock(file); Pickups = LoadType <PickupData>(); PhoneInfo = LoadType <PhoneData>(); RestartPoints = LoadType <RestartData>(); RadarBlips = LoadType <RadarData>(); Zones = LoadType <ZoneData>(); Gangs = LoadType <GangData>(); CarGenerators = LoadType <CarGeneratorData>(); ParticleObjects = LoadType <ParticleData>(); AudioScriptObjects = LoadType <AudioScriptData>(); PlayerInfo = LoadType <PlayerInfo>(); Stats = LoadType <Stats>(); Streaming = LoadType <Streaming>(); PedTypeInfo = LoadType <PedTypeData>(); numOuterBlocks = NumOuterBlocksPS2; } else { dataSize += ReadBlock(file); SimpleVars = WorkBuff.ReadObject <SimpleVariables>(FileFormat); Scripts = LoadType <ScriptData>(); dataSize += ReadBlock(file); PlayerPeds = LoadType <PedPool>(); dataSize += ReadBlock(file); Garages = LoadType <GarageData>(); dataSize += ReadBlock(file); Vehicles = LoadType <VehiclePool>(); dataSize += ReadBlock(file); Objects = LoadType <ObjectPool>(); dataSize += ReadBlock(file); Paths = LoadTypePreAlloc <PathData>(); dataSize += ReadBlock(file); Cranes = LoadType <CraneData>(); dataSize += ReadBlock(file); Pickups = LoadType <PickupData>(); dataSize += ReadBlock(file); PhoneInfo = LoadType <PhoneData>(); dataSize += ReadBlock(file); RestartPoints = LoadType <RestartData>(); dataSize += ReadBlock(file); RadarBlips = LoadType <RadarData>(); dataSize += ReadBlock(file); Zones = LoadType <ZoneData>(); dataSize += ReadBlock(file); Gangs = LoadType <GangData>(); dataSize += ReadBlock(file); CarGenerators = LoadType <CarGeneratorData>(); dataSize += ReadBlock(file); ParticleObjects = LoadType <ParticleData>(); dataSize += ReadBlock(file); AudioScriptObjects = LoadType <AudioScriptData>(); dataSize += ReadBlock(file); PlayerInfo = LoadType <PlayerInfo>(); dataSize += ReadBlock(file); Stats = LoadType <Stats>(); dataSize += ReadBlock(file); Streaming = LoadType <Streaming>(); dataSize += ReadBlock(file); PedTypeInfo = LoadType <PedTypeData>(); numOuterBlocks = NumOuterBlocks; } // Skip over padding int numPaddingBlocks = 0; int size = file.Length; if (FileFormat.IsXbox) { size -= XboxHelper.SignatureLength; } while (file.Position < size - 4) { dataSize += ReadBlock(file); numPaddingBlocks++; } // Size checks int expectedDataSize = DataSize; if (!(FileFormat.IsPS2 && FileFormat.IsJapanese)) { expectedDataSize += 1; } expectedDataSize = (expectedDataSize - 1) & 0x7FFFFFFC; int expectedFileSize = expectedDataSize + ((numOuterBlocks + numPaddingBlocks) * sizeof(int)) + sizeof(int); if (FileFormat.IsXbox) { expectedFileSize += XboxHelper.SignatureLength; } Debug.Assert(expectedDataSize == dataSize); Debug.Assert(expectedFileSize == file.Length); Debug.WriteLine("Load successful!"); }