summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2019-10-17 12:21:31 +0200
committerSergeanur <s.anureev@yandex.ua>2019-10-17 12:21:31 +0200
commit3ba57c5f6a9f7fb678181a39010dcec6a05b5121 (patch)
tree5c8ab33d768717a4ddc8764736c0cc3c9cd791a5
parentMerge pull request #244 from Nick007J/master (diff)
downloadre3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.tar
re3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.tar.gz
re3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.tar.bz2
re3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.tar.lz
re3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.tar.xz
re3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.tar.zst
re3-3ba57c5f6a9f7fb678181a39010dcec6a05b5121.zip
-rw-r--r--src/control/Gangs.cpp70
-rw-r--r--src/control/Pickups.cpp2
-rw-r--r--src/core/User.cpp3
-rw-r--r--src/render/Hud.cpp2
4 files changed, 30 insertions, 47 deletions
diff --git a/src/control/Gangs.cpp b/src/control/Gangs.cpp
index 9ff40ef3..f6f9261e 100644
--- a/src/control/Gangs.cpp
+++ b/src/control/Gangs.cpp
@@ -3,7 +3,7 @@
#include "ModelIndices.h"
#include "Gangs.h"
-CGangInfo(&CGangs::Gang)[NUM_GANGS] = *(CGangInfo(*)[9])*(uintptr*)0x6EDF78;
+CGangInfo(&CGangs::Gang)[NUM_GANGS] = *(CGangInfo(*)[NUM_GANGS])*(uintptr*)0x6EDF78;
CGangInfo::CGangInfo() :
m_nVehicleMI(MI_BUS),
@@ -47,53 +47,37 @@ int8 CGangs::GetGangPedModelOverride(int16 gang)
return GetGangInfo(gang)->m_nPedModelOverride;
}
-void CGangs::SaveAllGangData(uint8 *buffer, uint32 *size)
+void CGangs::SaveAllGangData(uint8 *buf, uint32 *size)
{
- buffer[0] = 'G';
- buffer[1] = 'N';
- buffer[2] = 'G';
- buffer[3] = '\0';
- *size = 8 + NUM_GANGS * 16;
- *(uint32*)(buffer + 4) = *size - 8;
- buffer += 8;
- for (int i = 0; i < NUM_GANGS; i++) {
- *(uint32*)(buffer) = GetGangInfo(i)->m_nVehicleMI;
- *(int8*)(buffer + 4) = GetGangInfo(i)->m_nPedModelOverride;
- *(int8*)(buffer + 5) = GetGangInfo(i)->field_5;
- *(int16*)(buffer + 6) = GetGangInfo(i)->field_6;
- *(eWeaponType*)(buffer + 8) = GetGangInfo(i)->m_Weapon1;
- *(eWeaponType*)(buffer + 12) = GetGangInfo(i)->m_Weapon2;
- buffer += 16;
- }
+INITSAVEBUF
+
+ *size = SAVE_HEADER_SIZE + sizeof(Gang);
+ WriteSaveHeader(buf, 'G','N','G','\0', *size - SAVE_HEADER_SIZE);
+ for (int i = 0; i < NUM_GANGS; i++)
+ WriteSaveBuf(buf, Gang[i]);
+
+VALIDATESAVEBUF(*size);
}
-void CGangs::LoadAllGangData(uint8 *buffer, uint32 size)
+void CGangs::LoadAllGangData(uint8 *buf, uint32 size)
{
- Initialize();
- assert(size == 8 + NUM_GANGS * 16);
- assert(buffer[0] == 'G');
- assert(buffer[1] == 'N');
- assert(buffer[2] == 'G');
- assert(buffer[3] == '\0');
- assert(*(uint32*)(buffer + 4) == size - 8);
- buffer += 8;
- for (int i = 0; i < NUM_GANGS; i++){
- GetGangInfo(i)->m_nVehicleMI = *(uint32*)(buffer);
- GetGangInfo(i)->m_nPedModelOverride = *(int8*)(buffer + 4);
- GetGangInfo(i)->field_5 = *(int8*)(buffer + 5);
- GetGangInfo(i)->field_6 = *(int16*)(buffer + 6);
- GetGangInfo(i)->m_Weapon1 = *(eWeaponType*)(buffer + 8);
- GetGangInfo(i)->m_Weapon2 = *(eWeaponType*)(buffer + 12);
- buffer += 16;
- }
+ Initialize();
+
+INITSAVEBUF
+
+ WriteSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE);
+ for (int i = 0; i < NUM_GANGS; i++)
+ Gang[i] = ReadSaveBuf<CGangInfo>(buf);
+
+VALIDATESAVEBUF(size);
}
STARTPATCHES
-InjectHook(0x4C3FB0, CGangs::Initialize, PATCH_JUMP);
-InjectHook(0x4C4010, CGangs::SetGangVehicleModel, PATCH_JUMP);
-InjectHook(0x4C4030, CGangs::SetGangWeapons, PATCH_JUMP);
-InjectHook(0x4C4050, CGangs::SetGangPedModelOverride, PATCH_JUMP);
-InjectHook(0x4C4070, CGangs::GetGangPedModelOverride, PATCH_JUMP);
-InjectHook(0x4C4080, CGangs::SaveAllGangData, PATCH_JUMP);
-InjectHook(0x4C4100, CGangs::LoadAllGangData, PATCH_JUMP);
+ InjectHook(0x4C3FB0, CGangs::Initialize, PATCH_JUMP);
+ InjectHook(0x4C4010, CGangs::SetGangVehicleModel, PATCH_JUMP);
+ InjectHook(0x4C4030, CGangs::SetGangWeapons, PATCH_JUMP);
+ InjectHook(0x4C4050, CGangs::SetGangPedModelOverride, PATCH_JUMP);
+ InjectHook(0x4C4070, CGangs::GetGangPedModelOverride, PATCH_JUMP);
+ InjectHook(0x4C4080, CGangs::SaveAllGangData, PATCH_JUMP);
+ InjectHook(0x4C4100, CGangs::LoadAllGangData, PATCH_JUMP);
ENDPATCHES
diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp
index 3ba01e46..e095ec8e 100644
--- a/src/control/Pickups.cpp
+++ b/src/control/Pickups.cpp
@@ -986,7 +986,7 @@ VALIDATESAVEBUF(size)
void
CPickups::Save(uint8 *buf, uint32 *size)
{
- *size = sizeof(CPickup) * NUMPICKUPS + sizeof(uint16) + sizeof(uint16) + sizeof(uint32) * NUMCOLLECTEDPICKUPS;
+ *size = sizeof(aPickUps) + sizeof(uint16) + sizeof(uint16) + sizeof(aPickUpsCollected);
INITSAVEBUF
diff --git a/src/core/User.cpp b/src/core/User.cpp
index f40a06db..890efcd6 100644
--- a/src/core/User.cpp
+++ b/src/core/User.cpp
@@ -125,8 +125,7 @@ void COnscreenTimerEntry::Process() {
*timerPtr = (uint32)newTime;
uint32 oldTimeSeconds = oldTime / 1000;
if(oldTimeSeconds <= 11 && newTime / 1000 != oldTimeSeconds) {
- // TODO: use an enum here
- DMAudio.PlayFrontEndSound(0x93, newTime / 1000);
+ DMAudio.PlayFrontEndSound(SOUND_CLOCK_TICK, newTime / 1000);
}
}
}
diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp
index d74816bf..a9215cb7 100644
--- a/src/render/Hud.cpp
+++ b/src/render/Hud.cpp
@@ -755,7 +755,7 @@ void CHud::Draw()
PagerXOffset -= fStep * CTimer::GetTimeStep();
}
if (!PagerSoundPlayed) {
- DMAudio.PlayFrontEndSound(96, 0);
+ DMAudio.PlayFrontEndSound(SOUND_PAGER, 0);
PagerSoundPlayed = 1;
}
}