diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2020-10-12 11:11:53 +0200 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2020-10-12 11:11:53 +0200 |
commit | 49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d (patch) | |
tree | 0b323a845df9e5cec07f07e9405db0d5dacbf63a /src/control | |
parent | fix (diff) | |
parent | Merge pull request #758 from erorcun/miami (diff) | |
download | re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.tar re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.tar.gz re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.tar.bz2 re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.tar.lz re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.tar.xz re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.tar.zst re3-49c48f2ec2f491fda24eca0fa96681f1f4d4fb8d.zip |
Diffstat (limited to 'src/control')
-rw-r--r-- | src/control/OnscreenTimer.cpp | 138 | ||||
-rw-r--r-- | src/control/OnscreenTimer.h | 32 |
2 files changed, 80 insertions, 90 deletions
diff --git a/src/control/OnscreenTimer.cpp b/src/control/OnscreenTimer.cpp index ec494019..52d00f43 100644 --- a/src/control/OnscreenTimer.cpp +++ b/src/control/OnscreenTimer.cpp @@ -7,36 +7,38 @@ #include "Timer.h" #include "Script.h" #include "OnscreenTimer.h" +#include "Camera.h" -//--MIAMI: file done +// --MIAMI: file done void COnscreenTimer::Init() { m_bDisabled = false; + for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) { + m_sCounters[i].m_nCounterOffset = 0; - for (uint32 i = 0; i < NUMONSCREENCOUNTERENTRIES; i++) { - m_sCounters[i].m_nOffset = 0; - - for (uint32 j = 0; j < 10; j++) - m_sCounters[i].m_aText[j] = 0; + for(uint32 j = 0; j < ARRAY_SIZE(COnscreenCounterEntry::m_aCounterText); j++) { + m_sCounters[i].m_aCounterText[j] = 0; + } m_sCounters[i].m_nType = COUNTER_DISPLAY_NUMBER; - m_sCounters[i].m_bProcessed = false; + m_sCounters[i].m_bCounterProcessed = false; } - for (uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - m_sTimers[i].m_nOffset = 0; + for(uint32 i = 0; i < NUMONSCREENCLOCKS; i++) { + m_sClocks[i].m_nClockOffset = 0; - for (uint32 j = 0; j < 10; j++) - m_sTimers[i].m_aText[j] = 0; + for(uint32 j = 0; j < ARRAY_SIZE(COnscreenTimerEntry::m_aClockText); j++) { + m_sClocks[i].m_aClockText[j] = 0; + } - m_sTimers[i].m_bProcessed = false; - m_sTimers[i].m_bGoingDown = true; + m_sClocks[i].m_bClockProcessed = false; + m_sClocks[i].m_bClockGoingDown = true; } } void COnscreenTimer::Process() { if(!CReplay::IsPlayingBack() && !m_bDisabled) { - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - m_sTimers[i].Process(); + for(uint32 i = 0; i < NUMONSCREENCLOCKS; i++) { + m_sClocks[i].Process(); } } } @@ -44,13 +46,19 @@ void COnscreenTimer::Process() { void COnscreenTimer::ProcessForDisplay() { if(CHud::m_Wants_To_Draw_Hud) { m_bProcessed = false; - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(m_sTimers[i].ProcessForDisplay()) { + for(uint32 i = 0; i < NUMONSCREENCLOCKS; i++) { + m_sClocks[i].m_bClockProcessed = false; + if (m_sClocks[i].m_nClockOffset != 0) { + m_sClocks[i].ProcessForDisplayClock(); + m_sClocks[i].m_bClockProcessed = true; m_bProcessed = true; } } - for (uint32 i = 0; i < NUMONSCREENCOUNTERENTRIES; i++) { - if (m_sCounters[i].ProcessForDisplay()) { + for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) { + m_sCounters[i].m_bCounterProcessed = false; + if (m_sCounters[i].m_nCounterOffset != 0) { + m_sCounters[i].ProcessForDisplayCounter(); + m_sCounters[i].m_bCounterProcessed = true; m_bProcessed = true; } } @@ -58,77 +66,81 @@ void COnscreenTimer::ProcessForDisplay() { } void COnscreenTimer::ClearCounter(uint32 offset) { - for(uint32 i = 0; i < NUMONSCREENCOUNTERENTRIES; i++) { - if(offset == m_sCounters[i].m_nOffset) { - m_sCounters[i].m_nOffset = 0; - m_sCounters[i].m_aText[0] = 0; + for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) { + if(offset == m_sCounters[i].m_nCounterOffset) { + m_sCounters[i].m_nCounterOffset = 0; + m_sCounters[i].m_aCounterText[0] = 0; m_sCounters[i].m_nType = COUNTER_DISPLAY_NUMBER; - m_sCounters[i].m_bProcessed = 0; + m_sCounters[i].m_bCounterProcessed = 0; } } } void COnscreenTimer::ClearClock(uint32 offset) { - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(offset == m_sTimers[i].m_nOffset) { - m_sTimers[i].m_nOffset = 0; - m_sTimers[i].m_aText[0] = 0; - m_sTimers[i].m_bProcessed = 0; + for(uint32 i = 0; i < NUMONSCREENCLOCKS; i++) { + if(offset == m_sClocks[i].m_nClockOffset) { + m_sClocks[i].m_nClockOffset = 0; + m_sClocks[i].m_aClockText[0] = 0; + m_sClocks[i].m_bClockProcessed = 0; + m_sClocks[i].m_bClockGoingDown = true; } } } void COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text, uint16 pos) { - m_sCounters[pos].m_nOffset = offset; - if (m_sCounters[pos].m_aText[0] != '\0') + if (m_sCounters[pos].m_aCounterText[0] != '\0') return; + + m_sCounters[pos].m_nCounterOffset = offset; if(text) { - strncpy(m_sCounters[pos].m_aText, text, 10); + strncpy(m_sCounters[pos].m_aCounterText, text, ARRAY_SIZE(COnscreenCounterEntry::m_aCounterText)); } else { - m_sCounters[pos].m_aText[0] = 0; + m_sCounters[pos].m_aCounterText[0] = 0; } m_sCounters[pos].m_nType = type; } void COnscreenTimer::AddClock(uint32 offset, char* text, bool bGoingDown) { - uint32 i = 0; - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(m_sTimers[i].m_nOffset == 0) { + + // dead code in here + uint32 i; + for(i = 0; i < NUMONSCREENCLOCKS; i++) { + if(m_sClocks[i].m_nClockOffset == 0) { break; } return; } - m_sTimers[i].m_nOffset = offset; - m_sTimers[i].m_bGoingDown = bGoingDown; + m_sClocks[i].m_nClockOffset = offset; + m_sClocks[i].m_bClockGoingDown = bGoingDown; if(text) { - strncpy(m_sTimers[i].m_aText, text, 10); + strncpy(m_sClocks[i].m_aClockText, text, ARRAY_SIZE(COnscreenTimerEntry::m_aClockText)); } else { - m_sTimers[i].m_aText[0] = 0; + m_sClocks[i].m_aClockText[0] = 0; } } void COnscreenTimerEntry::Process() { - if(m_nOffset == 0) { + if(m_nClockOffset == 0) { return; } - int32* timerPtr = CTheScripts::GetPointerToScriptVariable(m_nOffset); + int32* timerPtr = CTheScripts::GetPointerToScriptVariable(m_nClockOffset); int32 oldTime = *timerPtr; - if (m_bGoingDown) { + if (m_bClockGoingDown) { int32 newTime = oldTime - int32(CTimer::GetTimeStepInMilliseconds()); + *timerPtr = newTime; if (newTime < 0) { *timerPtr = 0; - m_bProcessed = 0; - m_nOffset = 0; - m_aText[0] = 0; + m_bClockProcessed = 0; + m_nClockOffset = 0; + m_aClockText[0] = 0; } else { - *timerPtr = newTime; int32 oldTimeSeconds = oldTime / 1000; - if (oldTimeSeconds < 12 && newTime / 1000 != oldTimeSeconds) { + if (oldTimeSeconds < 12 && newTime / 1000 != oldTimeSeconds && !TheCamera.m_WideScreenOn) { DMAudio.PlayFrontEndSound(SOUND_CLOCK_TICK, newTime / 1000); } } @@ -137,35 +149,13 @@ void COnscreenTimerEntry::Process() { *timerPtr = oldTime + int32(CTimer::GetTimeStepInMilliseconds()); } -bool COnscreenTimerEntry::ProcessForDisplay() { - m_bProcessed = false; - - if(m_nOffset == 0) - return false; - - m_bProcessed = true; - ProcessForDisplayClock(); - return true; -} - -bool COnscreenCounterEntry::ProcessForDisplay() { - m_bProcessed = false; - - if (m_nOffset == 0) - return false; - - m_bProcessed = true; - ProcessForDisplayCounter(); - return true; -} - void COnscreenTimerEntry::ProcessForDisplayClock() { - uint32 time = *CTheScripts::GetPointerToScriptVariable(m_nOffset); - sprintf(m_bBuffer, "%02d:%02d", time / 1000 / 60, + uint32 time = *CTheScripts::GetPointerToScriptVariable(m_nClockOffset); + sprintf(m_aClockBuffer, "%02d:%02d", time / 1000 / 60 % 100, time / 1000 % 60); } void COnscreenCounterEntry::ProcessForDisplayCounter() { - uint32 counter = *CTheScripts::GetPointerToScriptVariable(m_nOffset); - sprintf(m_bBuffer, "%d", counter); + uint32 counter = *CTheScripts::GetPointerToScriptVariable(m_nCounterOffset); + sprintf(m_aCounterBuffer, "%d", counter); } diff --git a/src/control/OnscreenTimer.h b/src/control/OnscreenTimer.h index 59014e0b..8c049d7d 100644 --- a/src/control/OnscreenTimer.h +++ b/src/control/OnscreenTimer.h @@ -9,37 +9,37 @@ enum class COnscreenTimerEntry { public: - uint32 m_nOffset; - char m_aText[10]; - char m_bBuffer[42]; - bool m_bProcessed; - bool m_bGoingDown; - + uint32 m_nClockOffset; + char m_aClockText[10]; + char m_aClockBuffer[40]; + bool m_bClockProcessed; + bool m_bClockGoingDown; void Process(); - bool ProcessForDisplay(); - void ProcessForDisplayClock(); }; +VALIDATE_SIZE(COnscreenTimerEntry, 0x3C); + class COnscreenCounterEntry { public: - uint32 m_nOffset; - char m_aText[10]; + uint32 m_nCounterOffset; + char m_aCounterText[10]; uint16 m_nType; - char m_bBuffer[42]; - bool m_bProcessed; + char m_aCounterBuffer[40]; + bool m_bCounterProcessed; - bool ProcessForDisplay(); void ProcessForDisplayCounter(); }; +VALIDATE_SIZE(COnscreenCounterEntry, 0x3C); + class COnscreenTimer { public: - COnscreenTimerEntry m_sTimers[NUMONSCREENTIMERENTRIES]; - COnscreenCounterEntry m_sCounters[NUMONSCREENCOUNTERENTRIES]; + COnscreenTimerEntry m_sClocks[NUMONSCREENCLOCKS]; + COnscreenCounterEntry m_sCounters[NUMONSCREENCOUNTERS]; bool m_bProcessed; bool m_bDisabled; @@ -54,4 +54,4 @@ public: void AddClock(uint32 offset, char* text, bool bGoingDown); }; -VALIDATE_SIZE(COnscreenTimer, 0x78); +VALIDATE_SIZE(COnscreenTimer, 0xF4); |