|
|
@@ -1883,11 +1883,12 @@ void CStoredCar::StoreCar(CVehicle* pVehicle) |
|
|
m_nRadioStation = pVehicle->m_nRadioStation; |
|
|
m_nVariationA = pVehicle->m_aExtras[0]; |
|
|
m_nVariationB = pVehicle->m_aExtras[1]; |
|
|
m_bBulletproof = pVehicle->bBulletProof; |
|
|
m_bFireproof = pVehicle->bFireProof; |
|
|
m_bExplosionproof = pVehicle->bExplosionProof; |
|
|
m_bCollisionproof = pVehicle->bCollisionProof; |
|
|
m_bMeleeproof = pVehicle->bMeleeProof; |
|
|
m_nFlags = 0; |
|
|
if (pVehicle->bBulletProof) m_nFlags |= FLAG_BULLETPROOF; |
|
|
if (pVehicle->bFireProof) m_nFlags |= FLAG_FIREPROOF; |
|
|
if (pVehicle->bExplosionProof) m_nFlags |= FLAG_EXPLOSIONPROOF; |
|
|
if (pVehicle->bCollisionProof) m_nFlags |= FLAG_COLLISIONPROOF; |
|
|
if (pVehicle->bMeleeProof) m_nFlags |= FLAG_MELEEPROOF; |
|
|
if (pVehicle->IsCar()) |
|
|
m_nCarBombType = ((CAutomobile*)pVehicle)->m_bombType; |
|
|
} |
|
|
@@ -1936,11 +1937,11 @@ CVehicle* CStoredCar::RestoreCar() |
|
|
} |
|
|
pVehicle->bHasBeenOwnedByPlayer = true; |
|
|
pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; |
|
|
pVehicle->bBulletProof = m_bBulletproof; |
|
|
pVehicle->bFireProof = m_bFireproof; |
|
|
pVehicle->bExplosionProof = m_bExplosionproof; |
|
|
pVehicle->bCollisionProof = m_bCollisionproof; |
|
|
pVehicle->bMeleeProof = m_bMeleeproof; |
|
|
if (m_nFlags & FLAG_BULLETPROOF) pVehicle->bBulletProof = true; |
|
|
if (m_nFlags & FLAG_FIREPROOF) pVehicle->bFireProof = true; |
|
|
if (m_nFlags & FLAG_EXPLOSIONPROOF) pVehicle->bExplosionProof = true; |
|
|
if (m_nFlags & FLAG_COLLISIONPROOF) pVehicle->bCollisionProof = true; |
|
|
if (m_nFlags & FLAG_MELEEPROOF) pVehicle->bMeleeProof = true; |
|
|
return pVehicle; |
|
|
} |
|
|
|
|
|
@@ -2327,8 +2328,47 @@ void CGarages::Save(uint8 * buf, uint32 * size) |
|
|
WriteSaveBuf(buf, aCarsInSafeHouse2[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]); |
|
|
#endif |
|
|
} |
|
|
#ifdef FIX_GARAGE_SIZE |
|
|
VALIDATESAVEBUF(*size); |
|
|
#endif |
|
|
@@ -2339,11 +2379,7 @@ const CStoredCar &CStoredCar::operator=(const CStoredCar & other) |
|
|
m_nModelIndex = other.m_nModelIndex; |
|
|
m_vecPos = other.m_vecPos; |
|
|
m_vecAngle = other.m_vecAngle; |
|
|
m_bBulletproof = other.m_bBulletproof; |
|
|
m_bFireproof = other.m_bFireproof; |
|
|
m_bExplosionproof = other.m_bExplosionproof; |
|
|
m_bCollisionproof = other.m_bCollisionproof; |
|
|
m_bMeleeproof = other.m_bMeleeproof; |
|
|
m_nFlags = other.m_nFlags; |
|
|
m_nPrimaryColor = other.m_nPrimaryColor; |
|
|
m_nSecondaryColor = other.m_nSecondaryColor; |
|
|
m_nRadioStation = other.m_nRadioStation; |
|
|
@@ -2357,7 +2393,7 @@ void CGarages::Load(uint8* buf, uint32 size) |
|
|
{ |
|
|
#ifdef FIX_GARAGE_SIZE |
|
|
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 |
|
|
assert(size == 5484); |
|
|
#endif |
|
|
@@ -2380,7 +2416,45 @@ void CGarages::Load(uint8* buf, uint32 size) |
|
|
ReadSaveBuf(&aCarsInSafeHouse3[i], buf); |
|
|
} |
|
|
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); |
|
|
#endif |
|
|
aGarages[i].m_pDoor1 = nil; |
|
|
aGarages[i].m_pDoor2 = nil; |
|
|
aGarages[i].m_pTarget = nil; |
|
|
|