From 3ba57c5f6a9f7fb678181a39010dcec6a05b5121 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 17 Oct 2019 13:21:31 +0300 Subject: Gangs save and missed sound enums --- src/control/Gangs.cpp | 70 +++++++++++++++++++------------------------------ src/control/Pickups.cpp | 2 +- src/core/User.cpp | 3 +-- src/render/Hud.cpp | 2 +- 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(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; } } -- cgit v1.2.3