|
|
@@ -1883,11 +1883,12 @@ void CStoredCar::StoreCar(CVehicle* pVehicle) |
|
m_nRadioStation = pVehicle->m_nRadioStation;
|
|
m_nRadioStation = pVehicle->m_nRadioStation;
|
|
m_nVariationA = pVehicle->m_aExtras[0];
|
|
m_nVariationA = pVehicle->m_aExtras[0];
|
|
m_nVariationB = pVehicle->m_aExtras[1];
|
|
m_nVariationB = pVehicle->m_aExtras[1];
|
|
m_bBulletproof = pVehicle->bBulletProof;
|
|
m_nFlags = 0;
|
|
m_bFireproof = pVehicle->bFireProof;
|
|
if (pVehicle->bBulletProof) m_nFlags |= FLAG_BULLETPROOF;
|
|
m_bExplosionproof = pVehicle->bExplosionProof;
|
|
if (pVehicle->bFireProof) m_nFlags |= FLAG_FIREPROOF;
|
|
m_bCollisionproof = pVehicle->bCollisionProof;
|
|
if (pVehicle->bExplosionProof) m_nFlags |= FLAG_EXPLOSIONPROOF;
|
|
m_bMeleeproof = pVehicle->bMeleeProof;
|
|
if (pVehicle->bCollisionProof) m_nFlags |= FLAG_COLLISIONPROOF;
|
|
|
|
if (pVehicle->bMeleeProof) m_nFlags |= FLAG_MELEEPROOF;
|
|
if (pVehicle->IsCar())
|
|
if (pVehicle->IsCar())
|
|
m_nCarBombType = ((CAutomobile*)pVehicle)->m_bombType;
|
|
m_nCarBombType = ((CAutomobile*)pVehicle)->m_bombType;
|
|
}
|
|
}
|
|
|
@@ -1936,11 +1937,11 @@ CVehicle* CStoredCar::RestoreCar() |
|
}
|
|
}
|
|
pVehicle->bHasBeenOwnedByPlayer = true;
|
|
pVehicle->bHasBeenOwnedByPlayer = true;
|
|
pVehicle->m_nDoorLock = CARLOCK_UNLOCKED;
|
|
pVehicle->m_nDoorLock = CARLOCK_UNLOCKED;
|
|
pVehicle->bBulletProof = m_bBulletproof;
|
|
if (m_nFlags & FLAG_BULLETPROOF) pVehicle->bBulletProof = true;
|
|
pVehicle->bFireProof = m_bFireproof;
|
|
if (m_nFlags & FLAG_FIREPROOF) pVehicle->bFireProof = true;
|
|
pVehicle->bExplosionProof = m_bExplosionproof;
|
|
if (m_nFlags & FLAG_EXPLOSIONPROOF) pVehicle->bExplosionProof = true;
|
|
pVehicle->bCollisionProof = m_bCollisionproof;
|
|
if (m_nFlags & FLAG_COLLISIONPROOF) pVehicle->bCollisionProof = true;
|
|
pVehicle->bMeleeProof = m_bMeleeproof;
|
|
if (m_nFlags & FLAG_MELEEPROOF) pVehicle->bMeleeProof = true;
|
|
return pVehicle;
|
|
return pVehicle;
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2327,8 +2328,47 @@ void CGarages::Save(uint8 * buf, uint32 * size) |
|
WriteSaveBuf(buf, aCarsInSafeHouse2[i]);
|
|
WriteSaveBuf(buf, aCarsInSafeHouse2[i]);
|
|
WriteSaveBuf(buf, aCarsInSafeHouse3[i]);
|
|
WriteSaveBuf(buf, aCarsInSafeHouse3[i]);
|
|
}
|
|
}
|
|
for (int i = 0; i < NUM_GARAGES; i++)
|
|
for (int i = 0; i < NUM_GARAGES; i++) {
|
|
|
|
#ifdef COMPATIBLE_SAVES2
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_eGarageType);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_eGarageState);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].field_2);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bClosingWithoutTargetCar);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bDeactivated);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bResprayHappened);
|
|
|
|
SkipSaveBuf(buf, 2);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_nTargetModelIndex);
|
|
|
|
SkipSaveBuf(buf, 4 + 4);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bDoor1PoolIndex);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bDoor2PoolIndex);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bDoor1IsDummy);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bDoor2IsDummy);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bRecreateDoorOnNextRefresh);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bRotatedDoor);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bCameraFollowsPlayer);
|
|
|
|
SkipSaveBuf(buf, 1);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fX1);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fX2);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fY1);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fY2);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fZ1);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fZ2);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoorPos);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoorHeight);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoor1X);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoor1Y);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoor2X);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoor2Y);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoor1Z);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_fDoor2Z);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_nTimeToStartAction);
|
|
|
|
WriteSaveBuf(buf, aGarages[i].m_bCollectedCarsState);
|
|
|
|
SkipSaveBuf(buf, 3 + 4 + 4);
|
|
|
|
SkipSaveBuf(buf, sizeof(aGarages[i].m_sStoredCar));
|
|
|
|
#else
|
|
WriteSaveBuf(buf, aGarages[i]);
|
|
WriteSaveBuf(buf, aGarages[i]);
|
|
|
|
#endif
|
|
|
|
}
|
|
#ifdef FIX_GARAGE_SIZE
|
|
#ifdef FIX_GARAGE_SIZE
|
|
VALIDATESAVEBUF(*size);
|
|
VALIDATESAVEBUF(*size);
|
|
#endif
|
|
#endif
|
|
|
@@ -2339,11 +2379,7 @@ const CStoredCar &CStoredCar::operator=(const CStoredCar & other) |
|
m_nModelIndex = other.m_nModelIndex;
|
|
m_nModelIndex = other.m_nModelIndex;
|
|
m_vecPos = other.m_vecPos;
|
|
m_vecPos = other.m_vecPos;
|
|
m_vecAngle = other.m_vecAngle;
|
|
m_vecAngle = other.m_vecAngle;
|
|
m_bBulletproof = other.m_bBulletproof;
|
|
m_nFlags = other.m_nFlags;
|
|
m_bFireproof = other.m_bFireproof;
|
|
|
|
m_bExplosionproof = other.m_bExplosionproof;
|
|
|
|
m_bCollisionproof = other.m_bCollisionproof;
|
|
|
|
m_bMeleeproof = other.m_bMeleeproof;
|
|
|
|
m_nPrimaryColor = other.m_nPrimaryColor;
|
|
m_nPrimaryColor = other.m_nPrimaryColor;
|
|
m_nSecondaryColor = other.m_nSecondaryColor;
|
|
m_nSecondaryColor = other.m_nSecondaryColor;
|
|
m_nRadioStation = other.m_nRadioStation;
|
|
m_nRadioStation = other.m_nRadioStation;
|
|
|
@@ -2357,7 +2393,7 @@ void CGarages::Load(uint8* buf, uint32 size) |
|
{
|
|
{
|
|
#ifdef FIX_GARAGE_SIZE
|
|
#ifdef FIX_GARAGE_SIZE
|
|
INITSAVEBUF
|
|
INITSAVEBUF
|
|
assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage));
|
|
assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)));
|
|
#else
|
|
#else
|
|
assert(size == 5484);
|
|
assert(size == 5484);
|
|
#endif
|
|
#endif
|
|
|
@@ -2380,7 +2416,45 @@ void CGarages::Load(uint8* buf, uint32 size) |
|
ReadSaveBuf(&aCarsInSafeHouse3[i], buf);
|
|
ReadSaveBuf(&aCarsInSafeHouse3[i], buf);
|
|
}
|
|
}
|
|
for (int i = 0; i < NUM_GARAGES; i++) {
|
|
for (int i = 0; i < NUM_GARAGES; i++) {
|
|
|
|
#ifdef COMPATIBLE_SAVES2
|
|
|
|
ReadSaveBuf(&aGarages[i].m_eGarageType, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_eGarageState, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].field_2, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bClosingWithoutTargetCar, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bDeactivated, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bResprayHappened, buf);
|
|
|
|
SkipSaveBuf(buf, 2);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_nTargetModelIndex, buf);
|
|
|
|
SkipSaveBuf(buf, 4 + 4);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bDoor1PoolIndex, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bDoor2PoolIndex, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bDoor1IsDummy, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bDoor2IsDummy, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bRecreateDoorOnNextRefresh, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bRotatedDoor, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bCameraFollowsPlayer, buf);
|
|
|
|
SkipSaveBuf(buf, 1);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fX1, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fX2, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fY1, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fY2, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fZ1, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fZ2, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoorPos, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoorHeight, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoor1X, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoor1Y, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoor2X, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoor2Y, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoor1Z, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_fDoor2Z, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_nTimeToStartAction, buf);
|
|
|
|
ReadSaveBuf(&aGarages[i].m_bCollectedCarsState, buf);
|
|
|
|
SkipSaveBuf(buf, 3 + 4 + 4);
|
|
|
|
SkipSaveBuf(buf, sizeof(aGarages[i].m_sStoredCar));
|
|
|
|
#else
|
|
ReadSaveBuf(&aGarages[i], buf);
|
|
ReadSaveBuf(&aGarages[i], buf);
|
|
|
|
#endif
|
|
aGarages[i].m_pDoor1 = nil;
|
|
aGarages[i].m_pDoor1 = nil;
|
|
aGarages[i].m_pDoor2 = nil;
|
|
aGarages[i].m_pDoor2 = nil;
|
|
aGarages[i].m_pTarget = nil;
|
|
aGarages[i].m_pTarget = nil;
|
|
|
|