diff options
author | erorcun <erorcunerorcun@hotmail.com.tr> | 2021-06-25 23:25:59 +0200 |
---|---|---|
committer | erorcun <erorcunerorcun@hotmail.com.tr> | 2021-06-25 23:25:59 +0200 |
commit | af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f (patch) | |
tree | 75a719bb1ab82b354f464562ecc1fae9c55f64d0 | |
parent | Merge pull request #1147 from withmorten/githash (diff) | |
download | re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.tar re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.tar.gz re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.tar.bz2 re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.tar.lz re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.tar.xz re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.tar.zst re3-af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f.zip |
-rw-r--r-- | src/audio/AudioScriptObject.cpp | 9 | ||||
-rw-r--r-- | src/control/AutoPilot.cpp | 54 | ||||
-rw-r--r-- | src/control/Garages.cpp | 28 | ||||
-rw-r--r-- | src/control/Phones.cpp | 11 | ||||
-rw-r--r-- | src/control/Pickups.cpp | 9 | ||||
-rw-r--r-- | src/control/Restart.cpp | 32 | ||||
-rw-r--r-- | src/control/Script5.cpp | 85 | ||||
-rw-r--r-- | src/core/Pools.cpp | 16 | ||||
-rw-r--r-- | src/core/Radar.cpp | 3 | ||||
-rw-r--r-- | src/core/Zones.cpp | 28 | ||||
-rw-r--r-- | src/core/common.h | 170 | ||||
-rw-r--r-- | src/entities/Entity.cpp | 6 | ||||
-rw-r--r-- | src/extras/debugmenu.h | 114 | ||||
-rw-r--r-- | src/peds/Gangs.cpp | 3 | ||||
-rw-r--r-- | src/peds/Ped.cpp | 1 | ||||
-rw-r--r-- | src/peds/PedType.cpp | 3 | ||||
-rw-r--r-- | src/peds/PlayerPed.cpp | 1 | ||||
-rw-r--r-- | src/render/Console.h | 2 | ||||
-rw-r--r-- | src/render/Particle.cpp | 1 | ||||
-rw-r--r-- | src/save/SaveBuf.h | 64 | ||||
-rw-r--r-- | src/vehicles/Automobile.cpp | 3 | ||||
-rw-r--r-- | src/vehicles/Boat.cpp | 1 | ||||
-rw-r--r-- | src/vehicles/CarGen.cpp | 20 | ||||
-rw-r--r-- | src/vehicles/Cranes.cpp | 7 | ||||
-rw-r--r-- | src/vehicles/Vehicle.cpp | 65 | ||||
-rw-r--r-- | src/weapons/Weapon.cpp | 1 |
26 files changed, 338 insertions, 399 deletions
diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index 623c43ca..ac30f757 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -3,7 +3,6 @@ #include "AudioScriptObject.h" #include "Pools.h" #include "DMAudio.h" -#include "SaveBuf.h" cAudioScriptObject::cAudioScriptObject() { @@ -54,14 +53,12 @@ cAudioScriptObject::LoadAllAudioScriptObjects(uint8 *buf, uint32 size) CheckSaveHeader(buf, 'A', 'U', 'D', '\0', size - SAVE_HEADER_SIZE); - int32 pool_size; - ReadSaveBuf(&pool_size, buf); + int32 pool_size = ReadSaveBuf<int32>(buf); for (int32 i = 0; i < pool_size; i++) { - int32 handle; - ReadSaveBuf(&handle, buf); + int handle = ReadSaveBuf<int32>(buf); cAudioScriptObject *p = new(handle) cAudioScriptObject; assert(p != nil); - ReadSaveBuf(p, buf); + *p = ReadSaveBuf<cAudioScriptObject>(buf); p->AudioEntity = DMAudio.CreateLoopingScriptObject(p); } diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 22a73179..77cbd0b4 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -5,7 +5,6 @@ #include "CarCtrl.h" #include "Curves.h" #include "PathFind.h" -#include "SaveBuf.h" void CAutoPilot::ModifySpeed(float speed) { @@ -89,40 +88,39 @@ void CAutoPilot::Save(uint8*& buf) void CAutoPilot::Load(uint8*& buf) { - ReadSaveBuf(&m_nCurrentRouteNode, buf); - ReadSaveBuf(&m_nNextRouteNode, buf); - ReadSaveBuf(&m_nPrevRouteNode, buf); - ReadSaveBuf(&m_nTimeEnteredCurve, buf); - ReadSaveBuf(&m_nTimeToSpendOnCurrentCurve, buf); - ReadSaveBuf(&m_nCurrentPathNodeInfo, buf); - ReadSaveBuf(&m_nNextPathNodeInfo, buf); - ReadSaveBuf(&m_nPreviousPathNodeInfo, buf); - ReadSaveBuf(&m_nAntiReverseTimer, buf); - ReadSaveBuf(&m_nTimeToStartMission, buf); - ReadSaveBuf(&m_nPreviousDirection, buf); - ReadSaveBuf(&m_nCurrentDirection, buf); - ReadSaveBuf(&m_nNextDirection, buf); - ReadSaveBuf(&m_nCurrentLane, buf); - ReadSaveBuf(&m_nNextLane, buf); - ReadSaveBuf(&m_nDrivingStyle, buf); - ReadSaveBuf(&m_nCarMission, buf); - ReadSaveBuf(&m_nTempAction, buf); - ReadSaveBuf(&m_nTimeTempAction, buf); - ReadSaveBuf(&m_fMaxTrafficSpeed, buf); - ReadSaveBuf(&m_nCruiseSpeed, buf); - uint8 flags; - ReadSaveBuf(&flags, buf); + m_nCurrentRouteNode = ReadSaveBuf<int32>(buf); + m_nNextRouteNode = ReadSaveBuf<int32>(buf); + m_nPrevRouteNode = ReadSaveBuf<int32>(buf); + m_nTimeEnteredCurve = ReadSaveBuf<int32>(buf); + m_nTimeToSpendOnCurrentCurve = ReadSaveBuf<int32>(buf); + m_nCurrentPathNodeInfo = ReadSaveBuf<uint32>(buf); + m_nNextPathNodeInfo = ReadSaveBuf<uint32>(buf); + m_nPreviousPathNodeInfo = ReadSaveBuf<uint32>(buf); + m_nAntiReverseTimer = ReadSaveBuf<uint32>(buf); + m_nTimeToStartMission = ReadSaveBuf<uint32>(buf); + m_nPreviousDirection = ReadSaveBuf<int8>(buf); + m_nCurrentDirection = ReadSaveBuf<int8>(buf); + m_nNextDirection = ReadSaveBuf<int8>(buf); + m_nCurrentLane = ReadSaveBuf<int8>(buf); + m_nNextLane = ReadSaveBuf<int8>(buf); + m_nDrivingStyle = ReadSaveBuf<uint8>(buf); + m_nCarMission = ReadSaveBuf<uint8>(buf); + m_nTempAction = ReadSaveBuf<uint8>(buf); + m_nTimeTempAction = ReadSaveBuf<uint32>(buf); + m_fMaxTrafficSpeed = ReadSaveBuf<float>(buf); + m_nCruiseSpeed = ReadSaveBuf<uint8>(buf); + uint8 flags = ReadSaveBuf<uint8>(buf); m_bSlowedDownBecauseOfCars = !!(flags & BIT(0)); m_bSlowedDownBecauseOfPeds = !!(flags & BIT(1)); m_bStayInCurrentLevel = !!(flags & BIT(2)); m_bStayInFastLane = !!(flags & BIT(3)); m_bIgnorePathfinding = !!(flags & BIT(4)); SkipSaveBuf(buf, 2); - ReadSaveBuf(&m_vecDestinationCoors.x, buf); - ReadSaveBuf(&m_vecDestinationCoors.y, buf); - ReadSaveBuf(&m_vecDestinationCoors.z, buf); + m_vecDestinationCoors.x = ReadSaveBuf<float>(buf); + m_vecDestinationCoors.y = ReadSaveBuf<float>(buf); + m_vecDestinationCoors.z = ReadSaveBuf<float>(buf); SkipSaveBuf(buf, 32); - ReadSaveBuf(&m_nPathFindNodesCount, buf); + m_nPathFindNodesCount = ReadSaveBuf<int16>(buf); SkipSaveBuf(buf, 6); } #endif
\ No newline at end of file diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 3410c881..792d3bda 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -24,7 +24,6 @@ #include "Vehicle.h" #include "Wanted.h" #include "World.h" -#include "SaveBuf.h" #define CRUSHER_GARAGE_X1 (1135.5f) #define CRUSHER_GARAGE_Y1 (57.0f) @@ -2362,25 +2361,22 @@ void CGarages::Load(uint8* buf, uint32 size) assert(size == 5484); #endif CloseHideOutGaragesBeforeSave(); - ReadSaveBuf(&NumGarages, buf); - int32 tempInt; - ReadSaveBuf(&tempInt, buf); - BombsAreFree = tempInt ? true : false; - ReadSaveBuf(&tempInt, buf); - RespraysAreFree = tempInt ? true : false; - ReadSaveBuf(&CarsCollected, buf); - ReadSaveBuf(&BankVansCollected, buf); - ReadSaveBuf(&PoliceCarsCollected, buf); + NumGarages = ReadSaveBuf<uint32>(buf); + BombsAreFree = ReadSaveBuf<uint32>(buf); + RespraysAreFree = ReadSaveBuf<uint32>(buf); + CarsCollected = ReadSaveBuf<int32>(buf); + BankVansCollected = ReadSaveBuf<int32>(buf); + PoliceCarsCollected = ReadSaveBuf<int32>(buf); for (int i = 0; i < TOTAL_COLLECTCARS_GARAGES; i++) - ReadSaveBuf(&CarTypesCollected[i], buf); - ReadSaveBuf(&LastTimeHelpMessage, buf); + CarTypesCollected[i] = ReadSaveBuf<uint32>(buf); + LastTimeHelpMessage = ReadSaveBuf<uint32>(buf); for (int i = 0; i < NUM_GARAGE_STORED_CARS; i++) { - ReadSaveBuf(&aCarsInSafeHouse1[i], buf); - ReadSaveBuf(&aCarsInSafeHouse2[i], buf); - ReadSaveBuf(&aCarsInSafeHouse3[i], buf); + aCarsInSafeHouse1[i] = ReadSaveBuf<CStoredCar>(buf); + aCarsInSafeHouse2[i] = ReadSaveBuf<CStoredCar>(buf); + aCarsInSafeHouse3[i] = ReadSaveBuf<CStoredCar>(buf); } for (int i = 0; i < NUM_GARAGES; i++) { - ReadSaveBuf(&aGarages[i], buf); + aGarages[i] = ReadSaveBuf<CGarage>(buf); aGarages[i].m_pDoor1 = nil; aGarages[i].m_pDoor2 = nil; aGarages[i].m_pTarget = nil; diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp index f9cb1421..ef7ecead 100644 --- a/src/control/Phones.cpp +++ b/src/control/Phones.cpp @@ -13,7 +13,6 @@ #include "RpAnimBlend.h" #include "AnimBlendAssociation.h" #include "soundlist.h" -#include "SaveBuf.h" #ifdef FIX_BUGS #include "Replay.h" #endif @@ -213,9 +212,8 @@ void CPhoneInfo::Load(uint8 *buf, uint32 size) { INITSAVEBUF - int32 max, scriptPhonesMax; - ReadSaveBuf(&max, buf); - ReadSaveBuf(&scriptPhonesMax, buf); + int max = ReadSaveBuf<int32>(buf); + int scriptPhonesMax = ReadSaveBuf<int32>(buf); #ifdef PEDS_REPORT_CRIMES_ON_PHONE m_nMax = Min(NUMPHONES, max); @@ -225,8 +223,7 @@ INITSAVEBUF // We can do it without touching saves. We'll only load script phones, others are already loaded in Initialise for (int i = 0; i < 50; i++) { - CPhone phoneToLoad; - ReadSaveBuf(&phoneToLoad, buf); + CPhone phoneToLoad = ReadSaveBuf<CPhone>(buf); if (ignoreOtherPhones) continue; @@ -252,7 +249,7 @@ INITSAVEBUF m_nScriptPhonesMax = scriptPhonesMax; for (int i = 0; i < NUMPHONES; i++) { - ReadSaveBuf(&m_aPhones[i], buf); + m_aPhones[i] = ReadSaveBuf<CPhone>(buf); // It's saved as building pool index in save file, convert it to true entity if (m_aPhones[i].m_pEntity) { m_aPhones[i].m_pEntity = CPools::GetBuildingPool()->GetSlot((uintptr)m_aPhones[i].m_pEntity - 1); diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 10175fba..a1e2a851 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -23,7 +23,6 @@ #ifdef FIX_BUGS #include "Replay.h" #endif -#include "SaveBuf.h" #include "Script.h" #include "Shadows.h" #include "SpecialFX.h" @@ -1000,18 +999,18 @@ CPickups::Load(uint8 *buf, uint32 size) INITSAVEBUF for (int32 i = 0; i < NUMPICKUPS; i++) { - ReadSaveBuf(&aPickUps[i], buf); + aPickUps[i] = ReadSaveBuf<CPickup>(buf); if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((uintptr)aPickUps[i].m_pObject - 1); } - ReadSaveBuf(&CollectedPickUpIndex, buf); - SkipSaveBuf(buf, 2); + CollectedPickUpIndex = ReadSaveBuf<uint16>(buf); + ReadSaveBuf<uint16>(buf); NumMessages = 0; for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) - ReadSaveBuf(&aPickUpsCollected[i], buf); + aPickUpsCollected[i] = ReadSaveBuf<int32>(buf); VALIDATESAVEBUF(size) } diff --git a/src/control/Restart.cpp b/src/control/Restart.cpp index 2f5e3d45..4ca18c3b 100644 --- a/src/control/Restart.cpp +++ b/src/control/Restart.cpp @@ -1,7 +1,6 @@ #include "common.h" #include "Restart.h" -#include "SaveBuf.h" #include "Zones.h" #include "PathFind.h" @@ -174,28 +173,29 @@ INITSAVEBUF CheckSaveHeader(buf, 'R','S','T','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_RESTART_POINTS; i++) { - ReadSaveBuf(&HospitalRestartPoints[i], buf); - ReadSaveBuf(&HospitalRestartHeadings[i], buf); + HospitalRestartPoints[i] = ReadSaveBuf<CVector>(buf); + HospitalRestartHeadings[i] = ReadSaveBuf<float>(buf); } for (int i = 0; i < NUM_RESTART_POINTS; i++) { - ReadSaveBuf(&PoliceRestartPoints[i], buf); - ReadSaveBuf(&PoliceRestartHeadings[i], buf); + PoliceRestartPoints[i] = ReadSaveBuf<CVector>(buf); + PoliceRestartHeadings[i] = ReadSaveBuf<float>(buf); } - ReadSaveBuf(&NumberOfHospitalRestarts, buf); - ReadSaveBuf(&NumberOfPoliceRestarts, buf); - ReadSaveBuf(&bOverrideRestart, buf); + NumberOfHospitalRestarts = ReadSaveBuf<uint16>(buf); + NumberOfPoliceRestarts = ReadSaveBuf<uint16>(buf); + bOverrideRestart = ReadSaveBuf<bool>(buf); // skip something unused - SkipSaveBuf(buf, 3); - - ReadSaveBuf(&OverridePosition, buf); - ReadSaveBuf(&OverrideHeading, buf); - ReadSaveBuf(&bFadeInAfterNextDeath, buf); - ReadSaveBuf(&bFadeInAfterNextArrest, buf); - ReadSaveBuf(&OverrideHospitalLevel, buf); - ReadSaveBuf(&OverridePoliceStationLevel, buf); + ReadSaveBuf<uint8>(buf); + ReadSaveBuf<uint16>(buf); + + OverridePosition = ReadSaveBuf<CVector>(buf); + OverrideHeading = ReadSaveBuf<float>(buf); + bFadeInAfterNextDeath = ReadSaveBuf<bool>(buf); + bFadeInAfterNextArrest = ReadSaveBuf<bool>(buf); + OverrideHospitalLevel = ReadSaveBuf<uint8>(buf); + OverridePoliceStationLevel = ReadSaveBuf<uint8>(buf); VALIDATESAVEBUF(size); } diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index a9aec18e..c83c3edc 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -12,7 +12,6 @@ #include "Pools.h" #include "Population.h" #include "RpAnimBlend.h" -#include "SaveBuf.h" #include "Shadows.h" #include "SpecialFX.h" #include "World.h" @@ -2003,25 +2002,21 @@ void CTheScripts::LoadAllScripts(uint8* buf, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buf, 'S', 'C', 'R', '\0', size - SAVE_HEADER_SIZE); - uint32 varSpace, type, handle; - uint32 tmp; - - ReadSaveBuf(&varSpace, buf); + uint32 varSpace = ReadSaveBuf<uint32>(buf); for (uint32 i = 0; i < varSpace; i++) - ReadSaveBuf(&ScriptSpace[i], buf); - ReadSaveBuf(&tmp, buf); - script_assert(tmp == SCRIPT_DATA_SIZE); - ReadSaveBuf(&OnAMissionFlag, buf); + ScriptSpace[i] = ReadSaveBuf<uint8>(buf); + script_assert(ReadSaveBuf<uint32>(buf) == SCRIPT_DATA_SIZE); + OnAMissionFlag = ReadSaveBuf<uint32>(buf); for (uint32 i = 0; i < MAX_NUM_CONTACTS; i++) { - ReadSaveBuf(&OnAMissionForContactFlag[i], buf); - ReadSaveBuf(&BaseBriefIdForContact[i], buf); + OnAMissionForContactFlag[i] = ReadSaveBuf<uint32>(buf); + BaseBriefIdForContact[i] = ReadSaveBuf<uint32>(buf); } for (uint32 i = 0; i < MAX_NUM_COLLECTIVES; i++) - ReadSaveBuf(&CollectiveArray[i], buf); - ReadSaveBuf(&NextFreeCollectiveIndex, buf); + CollectiveArray[i] = ReadSaveBuf<tCollectiveData>(buf); + NextFreeCollectiveIndex = ReadSaveBuf<uint32>(buf); for (uint32 i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) { - ReadSaveBuf(&type, buf); - ReadSaveBuf(&handle, buf); + uint32 type = ReadSaveBuf<uint32>(buf); + uint32 handle = ReadSaveBuf<uint32>(buf); switch (type) { case 0: BuildingSwapArray[i].m_pBuilding = nil; @@ -2035,14 +2030,14 @@ INITSAVEBUF default: script_assert(false); } - ReadSaveBuf(&BuildingSwapArray[i].m_nNewModel, buf); - ReadSaveBuf(&BuildingSwapArray[i].m_nOldModel, buf); + BuildingSwapArray[i].m_nNewModel = ReadSaveBuf<uint32>(buf); + BuildingSwapArray[i].m_nOldModel = ReadSaveBuf<uint32>(buf); if (BuildingSwapArray[i].m_pBuilding) BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nNewModel); } for (uint32 i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) { - ReadSaveBuf(&type, buf); - ReadSaveBuf(&handle, buf); + uint32 type = ReadSaveBuf<uint32>(buf); + uint32 handle = ReadSaveBuf<uint32>(buf); switch (type) { case 0: InvisibilitySettingArray[i] = nil; @@ -2065,20 +2060,14 @@ INITSAVEBUF if (InvisibilitySettingArray[i]) InvisibilitySettingArray[i]->bIsVisible = false; } - bool tmpBool; - ReadSaveBuf(&tmpBool, buf); - script_assert(tmpBool == bUsingAMultiScriptFile); - SkipSaveBuf(buf, 3); - ReadSaveBuf(&tmp, buf); - script_assert(tmp == MainScriptSize); - ReadSaveBuf(&tmp, buf); - script_assert(tmp == LargestMissionScriptSize); - uint16 tmp16; - ReadSaveBuf(&tmp16, buf); - script_assert(tmp16 == NumberOfMissionScripts); - SkipSaveBuf(buf, 2); - uint32 runningScripts; - ReadSaveBuf(&runningScripts, buf); + script_assert(ReadSaveBuf<bool>(buf) == bUsingAMultiScriptFile); + ReadSaveBuf<uint8>(buf); + ReadSaveBuf<uint16>(buf); + script_assert(ReadSaveBuf<uint32>(buf) == MainScriptSize); + script_assert(ReadSaveBuf<uint32>(buf) == LargestMissionScriptSize); + script_assert(ReadSaveBuf<uint16>(buf) == NumberOfMissionScripts); + ReadSaveBuf<uint16>(buf); + uint32 runningScripts = ReadSaveBuf<uint32>(buf); for (uint32 i = 0; i < runningScripts; i++) StartNewScript(0)->Load(buf); VALIDATESAVEBUF(size) @@ -2126,35 +2115,35 @@ void CRunningScript::Load(uint8*& buf) #ifdef COMPATIBLE_SAVES SkipSaveBuf(buf, 8); for (int i = 0; i < 8; i++) - ReadSaveBuf(&m_abScriptName[i], buf); - ReadSaveBuf(&m_nIp, buf); + m_abScriptName[i] = ReadSaveBuf<char>(buf); + m_nIp = ReadSaveBuf<uint32>(buf); #ifdef CHECK_STRUCT_SIZES static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6"); #endif for (int i = 0; i < MAX_STACK_DEPTH; i++) - ReadSaveBuf(&m_anStack[i], buf); - ReadSaveBuf(&m_nStackPointer, buf); + m_anStack[i] = ReadSaveBuf<uint32>(buf); + m_nStackPointer = ReadSaveBuf<uint16>(buf); SkipSaveBuf(buf, 2); #ifdef CHECK_STRUCT_SIZES static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18"); #endif for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++) - ReadSaveBuf(&m_anLocalVariables[i], buf); - ReadSaveBuf(&m_bCondResult, buf); - ReadSaveBuf(&m_bIsMissionScript, buf); - ReadSaveBuf(&m_bSkipWakeTime, buf); + m_anLocalVariables[i] = ReadSaveBuf<int32>(buf); + m_bCondResult = ReadSaveBuf<bool>(buf); + m_bIsMissionScript = ReadSaveBuf<bool>(buf); + m_bSkipWakeTime = ReadSaveBuf<bool>(buf); SkipSaveBuf(buf, 1); - ReadSaveBuf(&m_nWakeTime, buf); - ReadSaveBuf(&m_nAndOrState, buf); - ReadSaveBuf(&m_bNotFlag, buf); - ReadSaveBuf(&m_bDeatharrestEnabled, buf); - ReadSaveBuf(&m_bDeatharrestExecuted, buf); - ReadSaveBuf(&m_bMissionFlag, buf); + m_nWakeTime = ReadSaveBuf<uint32>(buf); + m_nAndOrState = ReadSaveBuf<uint16>(buf); + m_bNotFlag = ReadSaveBuf<bool>(buf); + m_bDeatharrestEnabled = ReadSaveBuf<bool>(buf); + m_bDeatharrestExecuted = ReadSaveBuf<bool>(buf); + m_bMissionFlag = ReadSaveBuf<bool>(buf); SkipSaveBuf(buf, 2); #else CRunningScript* n = next; CRunningScript* p = prev; - ReadSaveBuf(this, buf); + *this = ReadSaveBuf<CRunningScript>(buf); next = n; prev = p; #endif diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 5cffe9e4..39cfb1d4 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -9,7 +9,6 @@ #endif #include "Population.h" #include "ProjectileInfo.h" -#include "SaveBuf.h" #include "Streaming.h" #include "Wanted.h" #include "World.h" @@ -131,19 +130,14 @@ CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot) void CPools::LoadVehiclePool(uint8* buf, uint32 size) { INITSAVEBUF - int nNumCars, nNumBoats; - ReadSaveBuf(&nNumCars, buf); - ReadSaveBuf(&nNumBoats, buf); + int nNumCars = ReadSaveBuf<int>(buf); + int nNumBoats = ReadSaveBuf<int>(buf); for (int i = 0; i < nNumCars + nNumBoats; i++) { - uint32 type; - int16 model; - int32 slot; - - ReadSaveBuf(&type, buf); - ReadSaveBuf(&model, buf); + uint32 type = ReadSaveBuf<uint32>(buf); + int16 model = ReadSaveBuf<int16>(buf); CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY); CStreaming::LoadAllRequestedModels(false); - ReadSaveBuf(&slot, buf); + int32 slot = ReadSaveBuf<int32>(buf); CVehicle* pVehicle; #ifdef COMPATIBLE_SAVES if (type == VEHICLE_TYPE_BOAT) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 77d6cc7f..8f2c1747 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -16,7 +16,6 @@ #include "Script.h" #include "TxdStore.h" #include "World.h" -#include "SaveBuf.h" #include "Streaming.h" #include "SpecialFX.h" @@ -1056,7 +1055,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUMRADARBLIPS; i++) - ReadSaveBuf(&ms_RadarTrace[i], buf); + ms_RadarTrace[i] = ReadSaveBuf<sRadarTrace>(buf); VALIDATESAVEBUF(size); } diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp index 107b1db8..cdae85e1 100644 --- a/src/core/Zones.cpp +++ b/src/core/Zones.cpp @@ -8,7 +8,6 @@ #include "Text.h" #include "World.h" #include "Timer.h" -#include "SaveBuf.h" eLevelName CTheZones::m_CurrLevel; CZone *CTheZones::m_pPlayersZone; @@ -697,18 +696,17 @@ void CTheZones::LoadAllZones(uint8 *buffer, uint32 size) { INITSAVEBUF - int32 i; + int i; CheckSaveHeader(buffer, 'Z', 'N', 'S', '\0', size - SAVE_HEADER_SIZE); - ReadSaveBuf(&i, buffer); - m_pPlayersZone = GetPointerForZoneIndex(i); - ReadSaveBuf(&m_CurrLevel, buffer); - ReadSaveBuf(&FindIndex, buffer); - SkipSaveBuf(buffer, 2); + m_pPlayersZone = GetPointerForZoneIndex(ReadSaveBuf<int32>(buffer)); + m_CurrLevel = ReadSaveBuf<eLevelName>(buffer); + FindIndex = ReadSaveBuf<int16>(buffer); + ReadSaveBuf<int16>(buffer); for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){ - ReadSaveBuf(&ZoneArray[i], buffer); + ZoneArray[i] = ReadSaveBuf<CZone>(buffer); ZoneArray[i].child = GetPointerForZoneIndex((uintptr)ZoneArray[i].child); ZoneArray[i].parent = GetPointerForZoneIndex((uintptr)ZoneArray[i].parent); @@ -716,13 +714,13 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++) - ReadSaveBuf(&ZoneInfoArray[i], buffer); + ZoneInfoArray[i] = ReadSaveBuf<CZoneInfo>(buffer); - ReadSaveBuf(&TotalNumberOfZones, buffer); - ReadSaveBuf(&TotalNumberOfZoneInfos, buffer); + TotalNumberOfZones = ReadSaveBuf<int16>(buffer); + TotalNumberOfZoneInfos = ReadSaveBuf<int16>(buffer); for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++){ - ReadSaveBuf(&MapZoneArray[i], buffer); + MapZoneArray[i] = ReadSaveBuf<CZone>(buffer); /* The call of GetPointerForZoneIndex is wrong, as it is @@ -738,10 +736,10 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(AudioZoneArray); i++) - ReadSaveBuf(&AudioZoneArray[i], buffer); + AudioZoneArray[i] = ReadSaveBuf<int16>(buffer); - ReadSaveBuf(&TotalNumberOfMapZones, buffer); - ReadSaveBuf(&NumberOfAudioZones, buffer); + TotalNumberOfMapZones = ReadSaveBuf<uint16>(buffer); + NumberOfAudioZones = ReadSaveBuf<uint16>(buffer); VALIDATESAVEBUF(size) } diff --git a/src/core/common.h b/src/core/common.h index 7207f08d..e5077611 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -393,3 +393,173 @@ template<int s, int t> struct check_size { #define STR(x) STRINGIFY(x) #define CONCAT_(x,y) x##y #define CONCAT(x,y) CONCAT_(x,y) + +#ifdef DEBUGMENU +// Tweaking stuff for debugmenu +#define TWEAKPATH ___tw___TWEAKPATH +#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; +#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); +#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); + +// interface +class CTweakVar +{ +public: + virtual void AddDBG(const char *path) = 0; +}; + +class CTweakVars +{ +public: + static void Add(CTweakVar *var); + static void AddDBG(const char *path); +}; + +class CTweakFunc : public CTweakVar +{ + const char *m_pPath, *m_pVarName; + void (*m_pFunc)(); +public: + CTweakFunc(void (*pFunc)(), const char *strName, const char *strPath) : + m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) + { + CTweakVars::Add(this); + } + + void AddDBG(const char *path); +}; + +class CTweakBool : public CTweakVar +{ + const char *m_pPath, *m_pVarName; + bool *m_pBoolVar; +public: + CTweakBool(bool *pBool, const char *strName, const char *strPath) : + m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) + { + CTweakVars::Add(this); + } + + void AddDBG(const char *path); +}; + +class CTweakSwitch : public CTweakVar +{ + const char *m_pPath, *m_pVarName; + void *m_pIntVar; + int32 m_nMin, m_nMax; + const char **m_aStr; + void (*m_pFunc)(); +public: + CTweakSwitch(void *pInt, const char *strName, int32 nMin, int32 nMax, const char **aStr, + void (*pFunc)(), const char *strPath) + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), + m_aStr(aStr) + { + CTweakVars::Add(this); + } + + void AddDBG(const char *path); +}; + +#define _TWEEKCLASS(name, type) \ + class name : public CTweakVar \ + { \ + public: \ + const char *m_pPath, *m_pVarName; \ + type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ + \ + name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ + const char *strPath) \ + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ + m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ + \ + { \ + CTweakVars::Add(this); \ + } \ + \ + void AddDBG(const char *path); \ + }; + +_TWEEKCLASS(CTweakInt8, int8); +_TWEEKCLASS(CTweakUInt8, uint8); +_TWEEKCLASS(CTweakInt16, int16); +_TWEEKCLASS(CTweakUInt16, uint16); +_TWEEKCLASS(CTweakInt32, int32); +_TWEEKCLASS(CTweakUInt32, uint32); +_TWEEKCLASS(CTweakFloat, float); + +#undef _TWEEKCLASS +#endif + +#ifdef VALIDATE_SAVE_SIZE +extern int32 _saveBufCount; +#define INITSAVEBUF _saveBufCount = 0; +#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); +#else +#define INITSAVEBUF +#define VALIDATESAVEBUF(b) +#endif + +inline void SkipSaveBuf(uint8 *&buf, int32 skip) +{ + buf += skip; +#ifdef VALIDATE_SAVE_SIZE + _saveBufCount += skip; +#endif +} + +template<typename T> +inline const T ReadSaveBuf(uint8 *&buf) +{ + T &value = *(T*)buf; + SkipSaveBuf(buf, sizeof(T)); + return value; +} + +template<typename T> +inline T *WriteSaveBuf(uint8 *&buf, const T &value) +{ + T *p = (T*)buf; + *p = value; + SkipSaveBuf(buf, sizeof(T)); + return p; +} + + +#define SAVE_HEADER_SIZE (4*sizeof(char)+sizeof(uint32)) + +#define WriteSaveHeader(buf,a,b,c,d,size) \ + WriteSaveBuf(buf, a);\ + WriteSaveBuf(buf, b);\ + WriteSaveBuf(buf, c);\ + WriteSaveBuf(buf, d);\ + WriteSaveBuf<uint32>(buf, size); + +#define CheckSaveHeader(buf,a,b,c,d,size)\ + assert(ReadSaveBuf<char>(buf) == a);\ + assert(ReadSaveBuf<char>(buf) == b);\ + assert(ReadSaveBuf<char>(buf) == c);\ + assert(ReadSaveBuf<char>(buf) == d);\ + assert(ReadSaveBuf<uint32>(buf) == size); + + +void cprintf(char*, ...); diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index a7f4bd45..9d5bf73c 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -22,7 +22,6 @@ #include "MemoryHeap.h" #include "Bones.h" #include "Debug.h" -#include "SaveBuf.h" int gBuildings; @@ -754,8 +753,7 @@ CEntity::SaveEntityFlags(uint8*& buf) void CEntity::LoadEntityFlags(uint8*& buf) { - uint32 tmp; - ReadSaveBuf(&tmp, buf); + uint32 tmp = ReadSaveBuf<uint32>(buf); m_type = (tmp & ((BIT(3) - 1))); m_status = ((tmp >> 3) & (BIT(5) - 1)); @@ -786,7 +784,7 @@ CEntity::LoadEntityFlags(uint8*& buf) bZoneCulled = !!(tmp & BIT(30)); bZoneCulled2 = !!(tmp & BIT(31)); - ReadSaveBuf(&tmp, buf); + tmp = ReadSaveBuf<uint32>(buf); bRemoveFromWorld = !!(tmp & BIT(0)); bHasHitWall = !!(tmp & BIT(1)); diff --git a/src/extras/debugmenu.h b/src/extras/debugmenu.h index 45b65d04..c2198aca 100644 --- a/src/extras/debugmenu.h +++ b/src/extras/debugmenu.h @@ -2,120 +2,6 @@ #ifdef DEBUGMENU -// Tweaking stuff for debugmenu -#define TWEAKPATH ___tw___TWEAKPATH -#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; -#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); -#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); - -// interface -class CTweakVar -{ -public: - virtual void AddDBG(const char* path) = 0; -}; - -class CTweakVars -{ -public: - static void Add(CTweakVar* var); - static void AddDBG(const char* path); -}; - -class CTweakFunc : public CTweakVar -{ - const char* m_pPath, * m_pVarName; - void (*m_pFunc)(); -public: - CTweakFunc(void (*pFunc)(), const char* strName, const char* strPath) : - m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) - { - CTweakVars::Add(this); - } - - void AddDBG(const char* path); -}; - -class CTweakBool : public CTweakVar -{ - const char* m_pPath, * m_pVarName; - bool* m_pBoolVar; -public: - CTweakBool(bool* pBool, const char* strName, const char* strPath) : - m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) - { - CTweakVars::Add(this); - } - - void AddDBG(const char* path); -}; - -class CTweakSwitch : public CTweakVar -{ - const char* m_pPath, * m_pVarName; - void* m_pIntVar; - int32 m_nMin, m_nMax; - const char** m_aStr; - void (*m_pFunc)(); -public: - CTweakSwitch(void* pInt, const char* strName, int32 nMin, int32 nMax, const char** aStr, - void (*pFunc)(), const char* strPath) - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), - m_aStr(aStr) - { - CTweakVars::Add(this); - } - - void AddDBG(const char* path); -}; - -#define _TWEEKCLASS(name, type) \ - class name : public CTweakVar \ - { \ - public: \ - const char *m_pPath, *m_pVarName; \ - type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ - \ - name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ - const char *strPath) \ - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ - m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ - \ - { \ - CTweakVars::Add(this); \ - } \ - \ - void AddDBG(const char *path); \ - }; - -_TWEEKCLASS(CTweakInt8, int8); -_TWEEKCLASS(CTweakUInt8, uint8); -_TWEEKCLASS(CTweakInt16, int16); -_TWEEKCLASS(CTweakUInt16, uint16); -_TWEEKCLASS(CTweakInt32, int32); -_TWEEKCLASS(CTweakUInt32, uint32); -_TWEEKCLASS(CTweakFloat, float); - -#undef _TWEEKCLASS - typedef void (*TriggerFunc)(void); struct Menu; diff --git a/src/peds/Gangs.cpp b/src/peds/Gangs.cpp index be29379c..8859e61e 100644 --- a/src/peds/Gangs.cpp +++ b/src/peds/Gangs.cpp @@ -3,7 +3,6 @@ #include "ModelIndices.h" #include "Gangs.h" #include "Weapon.h" -#include "SaveBuf.h" CGangInfo CGangs::Gang[NUM_GANGS]; @@ -73,6 +72,6 @@ INITSAVEBUF CheckSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_GANGS; i++) - ReadSaveBuf(&Gang[i], buf); + Gang[i] = ReadSaveBuf<CGangInfo>(buf); VALIDATESAVEBUF(size); } diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 8e55510c..5e1fb842 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -32,7 +32,6 @@ #include "Floater.h" #include "Range2D.h" #include "Wanted.h" -#include "SaveBuf.h" CPed *gapTempPedList[50]; uint16 gnNumTempPedList; diff --git a/src/peds/PedType.cpp b/src/peds/PedType.cpp index dcd4c717..bacb1a78 100644 --- a/src/peds/PedType.cpp +++ b/src/peds/PedType.cpp @@ -3,7 +3,6 @@ #include "General.h" #include "FileMgr.h" #include "PedType.h" -#include "SaveBuf.h" CPedType *CPedType::ms_apPedType[NUM_PEDTYPES]; CPedStats *CPedStats::ms_apPedStats[NUM_PEDSTATS]; @@ -202,7 +201,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'P', 'T', 'P', '\0', size - SAVE_HEADER_SIZE); for(int i = 0; i < NUM_PEDTYPES; i++) - ReadSaveBuf(ms_apPedType[i], buf); + *ms_apPedType[i] = ReadSaveBuf<CPedType>(buf); VALIDATESAVEBUF(size) } diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index a67e2abc..46578486 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -16,7 +16,6 @@ #include "Pools.h" #include "Darkel.h" #include "CarCtrl.h" -#include "SaveBuf.h" #define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f diff --git a/src/render/Console.h b/src/render/Console.h index 9f22236f..b4fa60c4 100644 --- a/src/render/Console.h +++ b/src/render/Console.h @@ -23,5 +23,3 @@ public: }; extern CConsole TheConsole; - -void cprintf(char*, ...);
\ No newline at end of file diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index c971955f..07e80abe 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -14,7 +14,6 @@ #include "ParticleObject.h" #include "Particle.h" #include "soundlist.h" -#include "debugmenu.h" #define MAX_PARTICLES_ON_SCREEN (1000) diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h deleted file mode 100644 index ed48a650..00000000 --- a/src/save/SaveBuf.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#ifdef VALIDATE_SAVE_SIZE -extern int32 _saveBufCount; -#define INITSAVEBUF _saveBufCount = 0; -#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); -#else -#define INITSAVEBUF -#define VALIDATESAVEBUF(b) -#endif - -inline void -SkipSaveBuf(uint8 *&buf, int32 skip) -{ - buf += skip; -#ifdef VALIDATE_SAVE_SIZE - _saveBufCount += skip; -#endif -} - -template <typename T> -inline void -ReadSaveBuf(T* out, uint8 *&buf) -{ - *out = *(T *)buf; - SkipSaveBuf(buf, sizeof(T)); -} - -template <typename T> -inline T * -WriteSaveBuf(uint8 *&buf, const T &value) -{ - T *p = (T *)buf; - *p = value; - SkipSaveBuf(buf, sizeof(T)); - return p; -} - -#define SAVE_HEADER_SIZE (4 * sizeof(char) + sizeof(uint32)) - -#define WriteSaveHeader(buf, a, b, c, d, size) \ - WriteSaveBuf(buf, a); \ - WriteSaveBuf(buf, b); \ - WriteSaveBuf(buf, c); \ - WriteSaveBuf(buf, d); \ - WriteSaveBuf(buf, (uint32)size); - -#ifdef VALIDATE_SAVE_SIZE -#define CheckSaveHeader(buf, a, b, c, d, size) { \ - char _C; uint32 _size;\ - ReadSaveBuf(&_C, buf);\ - assert(_C == a);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == b);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == c);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == d);\ - ReadSaveBuf(&_size, buf);\ - assert(_size == size);\ - } -#else -#define CheckSaveHeader(buf, a, b, c, d, size) SkipSaveBuf(buf, 8); -#endif
\ No newline at end of file diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 7be6ed0b..c29c0536 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -45,7 +45,6 @@ #include "Object.h" #include "Automobile.h" #include "Wanted.h" -#include "SaveBuf.h" bool bAllCarCheat; // unused @@ -4725,7 +4724,7 @@ void CAutomobile::Load(uint8*& buf) { CVehicle::Load(buf); - ReadSaveBuf(&Damage, buf); + Damage = ReadSaveBuf<CDamageManager>(buf); SkipSaveBuf(buf, 800 - sizeof(CDamageManager)); SetupDamageAfterLoad(); } diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index bbe17f0b..4bbbadbd 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -19,7 +19,6 @@ #include "Pools.h" #include "Pad.h" #include "Boat.h" -#include "SaveBuf.h" #define INVALID_ORIENTATION (-9999.99f) diff --git a/src/vehicles/CarGen.cpp b/src/vehicles/CarGen.cpp index 22b2fc60..7524444b 100644 --- a/src/vehicles/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -13,7 +13,6 @@ #include "Timer.h" #include "Vehicle.h" #include "World.h" -#include "SaveBuf.h" uint8 CTheCarGenerators::ProcessCounter; uint32 CTheCarGenerators::NumOfCarGenerators; @@ -255,17 +254,14 @@ void CTheCarGenerators::LoadAllCarGenerators(uint8* buffer, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buffer, 'C','G','N','\0', size - SAVE_HEADER_SIZE); - uint32 tmp; - ReadSaveBuf(&tmp, buffer); - assert(tmp == nGeneralDataSize); - ReadSaveBuf(&NumOfCarGenerators, buffer); - ReadSaveBuf(&CurrentActiveCount, buffer); - ReadSaveBuf(&ProcessCounter, buffer); - ReadSaveBuf(&GenerateEvenIfPlayerIsCloseCounter, buffer); - SkipSaveBuf(buffer, 2); - ReadSaveBuf(&tmp, buffer); - assert(tmp == sizeof(CarGeneratorArray)); + assert(ReadSaveBuf<uint32>(buffer) == nGeneralDataSize); + NumOfCarGenerators = ReadSaveBuf<uint32>(buffer); + CurrentActiveCount = ReadSaveBuf<uint32>(buffer); + ProcessCounter = ReadSaveBuf<uint8>(buffer); + GenerateEvenIfPlayerIsCloseCounter = ReadSaveBuf<uint8>(buffer); + ReadSaveBuf<int16>(buffer); // alignment + assert(ReadSaveBuf<uint32>(buffer) == sizeof(CarGeneratorArray)); for (int i = 0; i < NUM_CARGENS; i++) - ReadSaveBuf(&CarGeneratorArray[i], buffer); + CarGeneratorArray[i] = ReadSaveBuf<CCarGenerator>(buffer); VALIDATESAVEBUF(size) } diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index 0f1b8b4c..0c7913af 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -11,7 +11,6 @@ #include "Replay.h" #include "Object.h" #include "World.h" -#include "SaveBuf.h" #define MAX_DISTANCE_TO_FIND_CRANE (10.0f) #define CRANE_UPDATE_RADIUS (300.0f) @@ -654,10 +653,10 @@ void CCranes::Load(uint8* buf, uint32 size) { INITSAVEBUF - ReadSaveBuf(&NumCranes, buf); - ReadSaveBuf(&CarsCollectedMilitaryCrane, buf); + NumCranes = ReadSaveBuf<int32>(buf); + CarsCollectedMilitaryCrane = ReadSaveBuf<uint32>(buf); for (int i = 0; i < NUM_CRANES; i++) - ReadSaveBuf(&aCranes[i], buf); + aCranes[i] = ReadSaveBuf<CCrane>(buf); for (int i = 0; i < NUM_CRANES; i++) { CCrane *pCrane = &aCranes[i]; if (pCrane->m_pCraneEntity != nil) diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 8112f0fe..8885485d 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -18,7 +18,6 @@ #include "Radar.h" #include "Fire.h" #include "Darkel.h" -#include "SaveBuf.h" bool CVehicle::bWheelsOnlyCheat; bool CVehicle::bAllDodosCheat; @@ -1324,44 +1323,43 @@ CVehicle::Load(uint8*& buf) { CMatrix tmp; SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetRight().x, buf); - ReadSaveBuf(&tmp.GetRight().y, buf); - ReadSaveBuf(&tmp.GetRight().z, buf); + tmp.GetRight().x = ReadSaveBuf<float>(buf); + tmp.GetRight().y = ReadSaveBuf<float>(buf); + tmp.GetRight().z = ReadSaveBuf<float>(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetForward().x, buf); - ReadSaveBuf(&tmp.GetForward().y, buf); - ReadSaveBuf(&tmp.GetForward().z, buf); + tmp.GetForward().x = ReadSaveBuf<float>(buf); + tmp.GetForward().y = ReadSaveBuf<float>(buf); + tmp.GetForward().z = ReadSaveBuf<float>(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetUp().x, buf); - ReadSaveBuf(&tmp.GetUp().y, buf); - ReadSaveBuf(&tmp.GetUp().z, buf); + tmp.GetUp().x = ReadSaveBuf<float>(buf); + tmp.GetUp().y = ReadSaveBuf<float>(buf); + tmp.GetUp().z = ReadSaveBuf<float>(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetPosition().x, buf); - ReadSaveBuf(&tmp.GetPosition().y, buf); - ReadSaveBuf(&tmp.GetPosition().z, buf); + tmp.GetPosition().x = ReadSaveBuf<float>(buf); + tmp.GetPosition().y = ReadSaveBuf<float>(buf); + tmp.GetPosition().z = ReadSaveBuf<float>(buf); m_matrix = tmp; SkipSaveBuf(buf, 16); LoadEntityFlags(buf); SkipSaveBuf(buf, 212); AutoPilot.Load(buf); - ReadSaveBuf(&m_currentColour1, buf); - ReadSaveBuf(&m_currentColour2, buf); + m_currentColour1 = ReadSaveBuf<int8>(buf); + m_currentColour2 = ReadSaveBuf<int8>(buf); SkipSaveBuf(buf, 2); - ReadSaveBuf(&m_nAlarmState, buf); + m_nAlarmState = ReadSaveBuf<int16>(buf); SkipSaveBuf(buf, 43); - ReadSaveBuf(&m_nNumMaxPassengers, buf); + m_nNumMaxPassengers = ReadSaveBuf<int8>(buf); SkipSaveBuf(buf, 2); - ReadSaveBuf(&field_1D0[0], buf); - ReadSaveBuf(&field_1D0[1], buf); - ReadSaveBuf(&field_1D0[2], buf); - ReadSaveBuf(&field_1D0[3], buf); + field_1D0[0] = ReadSaveBuf<float>(buf); + field_1D0[1] = ReadSaveBuf<float>(buf); + field_1D0[2] = ReadSaveBuf<float>(buf); + field_1D0[3] = ReadSaveBuf<float>(buf); SkipSaveBuf(buf, 8); - ReadSaveBuf(&m_fSteerAngle, buf); - ReadSaveBuf(&m_fGasPedal, buf); - ReadSaveBuf(&m_fBrakePedal, buf); - ReadSaveBuf(&VehicleCreatedBy, buf); - uint8 flags; - ReadSaveBuf(&flags, buf); + m_fSteerAngle = ReadSaveBuf<float>(buf); + m_fGasPedal = ReadSaveBuf<float>(buf); + m_fBrakePedal = ReadSaveBuf<float>(buf); + VehicleCreatedBy = ReadSaveBuf<uint8>(buf); + uint8 flags = ReadSaveBuf<uint8>(buf); bIsLawEnforcer = !!(flags & BIT(0)); bIsLocked = !!(flags & BIT(3)); bEngineOn = !!(flags & BIT(4)); @@ -1369,17 +1367,16 @@ CVehicle::Load(uint8*& buf) bLightsOn = !!(flags & BIT(6)); bFreebies = !!(flags & BIT(7)); SkipSaveBuf(buf, 10); - ReadSaveBuf(&m_fHealth, buf); - ReadSaveBuf(&m_nCurrentGear, buf); + m_fHealth = ReadSaveBuf<float>(buf); + m_nCurrentGear = ReadSaveBuf<uint8>(buf); SkipSaveBuf(buf, 3); - ReadSaveBuf(&m_fChangeGearTime, buf); + m_fChangeGearTime = ReadSaveBuf<float>(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&m_nTimeOfDeath, buf); + m_nTimeOfDeath = ReadSaveBuf<uint32>(buf); SkipSaveBuf(buf, 2); - ReadSaveBuf(&m_nBombTimer, buf); + m_nBombTimer = ReadSaveBuf<int16>(buf); SkipSaveBuf(buf, 12); - ReadSaveBuf(&flags, buf); - m_nDoorLock = (eCarLock)flags; + m_nDoorLock = (eCarLock)ReadSaveBuf<int8>(buf); SkipSaveBuf(buf, 99); } #endif diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index b4d04a4b..b3909a08 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -30,7 +30,6 @@ #include "WaterLevel.h" #include "WeaponInfo.h" #include "World.h" -#include "SaveBuf.h" uint16 gReloadSampleTime[WEAPONTYPE_LAST_WEAPONTYPE] = { |