diff options
author | Fire-Head <Fire-Head@users.noreply.github.com> | 2019-06-13 02:40:46 +0200 |
---|---|---|
committer | Fire-Head <Fire-Head@users.noreply.github.com> | 2019-06-13 02:40:46 +0200 |
commit | 06e48c70595808f8c3143d4284e5757e29d81800 (patch) | |
tree | e321a452104d4dd3716b1bdfaa1bda81a739be26 /src/User.cpp | |
parent | CPad done (diff) | |
parent | Merge pull request #6 from GTAmodding/master (diff) | |
download | re3-06e48c70595808f8c3143d4284e5757e29d81800.tar re3-06e48c70595808f8c3143d4284e5757e29d81800.tar.gz re3-06e48c70595808f8c3143d4284e5757e29d81800.tar.bz2 re3-06e48c70595808f8c3143d4284e5757e29d81800.tar.lz re3-06e48c70595808f8c3143d4284e5757e29d81800.tar.xz re3-06e48c70595808f8c3143d4284e5757e29d81800.tar.zst re3-06e48c70595808f8c3143d4284e5757e29d81800.zip |
Diffstat (limited to 'src/User.cpp')
-rw-r--r-- | src/User.cpp | 77 |
1 files changed, 39 insertions, 38 deletions
diff --git a/src/User.cpp b/src/User.cpp index c36f62eb..c9ab761d 100644 --- a/src/User.cpp +++ b/src/User.cpp @@ -1,4 +1,3 @@ -#include "User.h" #include "common.h" #include "patcher.h" @@ -6,15 +5,15 @@ #include "Hud.h" #include "Replay.h" #include "Timer.h" +#include "Script.h" +#include "User.h" CPlaceName& CUserDisplay::PlaceName = *(CPlaceName*)0x8F29BC; COnscreenTimer& CUserDisplay::OnscnTimer = *(COnscreenTimer*)0x862238; CPager& CUserDisplay::Pager = *(CPager*)0x8F2744; CCurrentVehicle& CUserDisplay::CurrentVehicle = *(CCurrentVehicle*)0x8F5FE8; -char* CTheScripts::ScriptSpace = (char*)0x74B248; - -int COnscreenTimer::Init() { +void COnscreenTimer::Init() { m_bDisabled = false; for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { m_sEntries[i].m_nTimerOffset = 0; @@ -29,11 +28,10 @@ int COnscreenTimer::Init() { m_sEntries[i].m_bTimerProcessed = 0; m_sEntries[i].m_bCounterProcessed = 0; } - return 1; } void COnscreenTimer::Process() { - if(CReplay::Mode != 1 && !m_bDisabled) { + if(CReplay::Mode != CReplay::MODE_1 && !m_bDisabled) { for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { m_sEntries[i].Process(); } @@ -83,7 +81,7 @@ void COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text) { m_sEntries[i].m_nCounterOffset = offset; if(text) { - strncpy((char*)m_sEntries[i].m_aCounterText, text, 10); + strncpy(m_sEntries[i].m_aCounterText, text, 10); } else { m_sEntries[i].m_aCounterText[0] = 0; } @@ -102,28 +100,31 @@ void COnscreenTimer::AddClock(uint32 offset, char* text) { m_sEntries[i].m_nTimerOffset = offset; if(text) { - strncpy((char*)m_sEntries[i].m_aTimerText, text, 10u); + strncpy(m_sEntries[i].m_aTimerText, text, 10); } else { m_sEntries[i].m_aTimerText[0] = 0; } } void COnscreenTimerEntry::Process() { - if(m_nTimerOffset) { - uint32* timerPtr = (uint32*)&CTheScripts::ScriptSpace[m_nTimerOffset]; - uint32 oldTime = *timerPtr; - int32 newTime = int32(oldTime - uint32(20.0f * CTimer::GetTimeStep())); - if(newTime < 0) { - *timerPtr = 0; - m_bTimerProcessed = 0; - m_nTimerOffset = 0; - m_aTimerText[0] = 0; - } else { - *timerPtr = (uint32)newTime; - uint32 oldTimeSeconds = oldTime / 1000; - if(oldTimeSeconds <= 11 && newTime / 1000 != oldTimeSeconds) { - DMAudio.PlayFrontEndSound(0x93u, newTime / 1000); - } + if(m_nTimerOffset == 0) { + return; + } + + uint32* timerPtr = (uint32*)&CTheScripts::ScriptSpace[m_nTimerOffset]; + uint32 oldTime = *timerPtr; + int32 newTime = int32(oldTime - uint32(20.0f * CTimer::GetTimeStep())); + if(newTime < 0) { + *timerPtr = 0; + m_bTimerProcessed = 0; + m_nTimerOffset = 0; + m_aTimerText[0] = 0; + } else { + *timerPtr = (uint32)newTime; + uint32 oldTimeSeconds = oldTime / 1000; + if(oldTimeSeconds <= 11 && newTime / 1000 != oldTimeSeconds) { + // TODO: use an enum here + DMAudio.PlayFrontEndSound(0x93, newTime / 1000); } } } @@ -132,16 +133,16 @@ bool COnscreenTimerEntry::ProcessForDisplay() { m_bTimerProcessed = false; m_bCounterProcessed = false; - if(!m_nTimerOffset && !m_nCounterOffset) { + if(m_nTimerOffset == 0 && m_nCounterOffset == 0) { return false; } - if(m_nTimerOffset) { + if(m_nTimerOffset != 0) { m_bTimerProcessed = true; ProcessForDisplayTimer(); } - if(m_nCounterOffset) { + if(m_nCounterOffset != 0) { m_bCounterProcessed = true; ProcessForDisplayCounter(); } @@ -160,16 +161,16 @@ int COnscreenTimerEntry::ProcessForDisplayCounter() { } STARTPATCHES -InjectHook(0x429160, &COnscreenTimerEntry::Process, PATCH_JUMP); -InjectHook(0x429110, &COnscreenTimerEntry::ProcessForDisplay, PATCH_JUMP); -InjectHook(0x429080, &COnscreenTimerEntry::ProcessForDisplayTimer, PATCH_JUMP); -InjectHook(0x4290F0, &COnscreenTimerEntry::ProcessForDisplayCounter, PATCH_JUMP); - -InjectHook(0x429220, &COnscreenTimer::Init, PATCH_JUMP); -InjectHook(0x429320, &COnscreenTimer::Process, PATCH_JUMP); -InjectHook(0x4292E0, &COnscreenTimer::ProcessForDisplay, PATCH_JUMP); -InjectHook(0x429450, &COnscreenTimer::ClearCounter, PATCH_JUMP); -InjectHook(0x429410, &COnscreenTimer::ClearClock, PATCH_JUMP); -InjectHook(0x4293B0, &COnscreenTimer::AddCounter, PATCH_JUMP); -InjectHook(0x429350, &COnscreenTimer::AddClock, PATCH_JUMP); + InjectHook(0x429160, &COnscreenTimerEntry::Process, PATCH_JUMP); + InjectHook(0x429110, &COnscreenTimerEntry::ProcessForDisplay, PATCH_JUMP); + InjectHook(0x429080, &COnscreenTimerEntry::ProcessForDisplayTimer, PATCH_JUMP); + InjectHook(0x4290F0, &COnscreenTimerEntry::ProcessForDisplayCounter, PATCH_JUMP); + + InjectHook(0x429220, &COnscreenTimer::Init, PATCH_JUMP); + InjectHook(0x429320, &COnscreenTimer::Process, PATCH_JUMP); + InjectHook(0x4292E0, &COnscreenTimer::ProcessForDisplay, PATCH_JUMP); + InjectHook(0x429450, &COnscreenTimer::ClearCounter, PATCH_JUMP); + InjectHook(0x429410, &COnscreenTimer::ClearClock, PATCH_JUMP); + InjectHook(0x4293B0, &COnscreenTimer::AddCounter, PATCH_JUMP); + InjectHook(0x429350, &COnscreenTimer::AddClock, PATCH_JUMP); ENDPATCHES |