Exemplo n.º 1
0
        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!");
        }
Exemplo n.º 2
0
        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!");
        }