Gangs save and missed sound enums

This commit is contained in:
Sergeanur 2019-10-17 13:21:31 +03:00
parent 2c81844c20
commit 3ba57c5f6a
4 changed files with 30 additions and 47 deletions

View File

@ -3,7 +3,7 @@
#include "ModelIndices.h" #include "ModelIndices.h"
#include "Gangs.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() : CGangInfo::CGangInfo() :
m_nVehicleMI(MI_BUS), m_nVehicleMI(MI_BUS),
@ -47,53 +47,37 @@ int8 CGangs::GetGangPedModelOverride(int16 gang)
return GetGangInfo(gang)->m_nPedModelOverride; return GetGangInfo(gang)->m_nPedModelOverride;
} }
void CGangs::SaveAllGangData(uint8 *buffer, uint32 *size) void CGangs::SaveAllGangData(uint8 *buf, uint32 *size)
{ {
buffer[0] = 'G'; INITSAVEBUF
buffer[1] = 'N';
buffer[2] = 'G'; *size = SAVE_HEADER_SIZE + sizeof(Gang);
buffer[3] = '\0'; WriteSaveHeader(buf, 'G','N','G','\0', *size - SAVE_HEADER_SIZE);
*size = 8 + NUM_GANGS * 16; for (int i = 0; i < NUM_GANGS; i++)
*(uint32*)(buffer + 4) = *size - 8; WriteSaveBuf(buf, Gang[i]);
buffer += 8;
for (int i = 0; i < NUM_GANGS; i++) { VALIDATESAVEBUF(*size);
*(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;
}
} }
void CGangs::LoadAllGangData(uint8 *buffer, uint32 size) void CGangs::LoadAllGangData(uint8 *buf, uint32 size)
{ {
Initialize(); Initialize();
assert(size == 8 + NUM_GANGS * 16);
assert(buffer[0] == 'G'); INITSAVEBUF
assert(buffer[1] == 'N');
assert(buffer[2] == 'G'); WriteSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE);
assert(buffer[3] == '\0'); for (int i = 0; i < NUM_GANGS; i++)
assert(*(uint32*)(buffer + 4) == size - 8); Gang[i] = ReadSaveBuf<CGangInfo>(buf);
buffer += 8;
for (int i = 0; i < NUM_GANGS; i++){ VALIDATESAVEBUF(size);
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;
}
} }
STARTPATCHES STARTPATCHES
InjectHook(0x4C3FB0, CGangs::Initialize, PATCH_JUMP); InjectHook(0x4C3FB0, CGangs::Initialize, PATCH_JUMP);
InjectHook(0x4C4010, CGangs::SetGangVehicleModel, PATCH_JUMP); InjectHook(0x4C4010, CGangs::SetGangVehicleModel, PATCH_JUMP);
InjectHook(0x4C4030, CGangs::SetGangWeapons, PATCH_JUMP); InjectHook(0x4C4030, CGangs::SetGangWeapons, PATCH_JUMP);
InjectHook(0x4C4050, CGangs::SetGangPedModelOverride, PATCH_JUMP); InjectHook(0x4C4050, CGangs::SetGangPedModelOverride, PATCH_JUMP);
InjectHook(0x4C4070, CGangs::GetGangPedModelOverride, PATCH_JUMP); InjectHook(0x4C4070, CGangs::GetGangPedModelOverride, PATCH_JUMP);
InjectHook(0x4C4080, CGangs::SaveAllGangData, PATCH_JUMP); InjectHook(0x4C4080, CGangs::SaveAllGangData, PATCH_JUMP);
InjectHook(0x4C4100, CGangs::LoadAllGangData, PATCH_JUMP); InjectHook(0x4C4100, CGangs::LoadAllGangData, PATCH_JUMP);
ENDPATCHES ENDPATCHES

View File

@ -986,7 +986,7 @@ VALIDATESAVEBUF(size)
void void
CPickups::Save(uint8 *buf, uint32 *size) 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 INITSAVEBUF

View File

@ -125,8 +125,7 @@ void COnscreenTimerEntry::Process() {
*timerPtr = (uint32)newTime; *timerPtr = (uint32)newTime;
uint32 oldTimeSeconds = oldTime / 1000; uint32 oldTimeSeconds = oldTime / 1000;
if(oldTimeSeconds <= 11 && newTime / 1000 != oldTimeSeconds) { if(oldTimeSeconds <= 11 && newTime / 1000 != oldTimeSeconds) {
// TODO: use an enum here DMAudio.PlayFrontEndSound(SOUND_CLOCK_TICK, newTime / 1000);
DMAudio.PlayFrontEndSound(0x93, newTime / 1000);
} }
} }
} }

View File

@ -755,7 +755,7 @@ void CHud::Draw()
PagerXOffset -= fStep * CTimer::GetTimeStep(); PagerXOffset -= fStep * CTimer::GetTimeStep();
} }
if (!PagerSoundPlayed) { if (!PagerSoundPlayed) {
DMAudio.PlayFrontEndSound(96, 0); DMAudio.PlayFrontEndSound(SOUND_PAGER, 0);
PagerSoundPlayed = 1; PagerSoundPlayed = 1;
} }
} }