diff options
Diffstat (limited to 'src/control/OnscreenTimer.cpp')
-rw-r--r-- | src/control/OnscreenTimer.cpp | 126 |
1 files changed, 70 insertions, 56 deletions
diff --git a/src/control/OnscreenTimer.cpp b/src/control/OnscreenTimer.cpp index d94e993e..ec494019 100644 --- a/src/control/OnscreenTimer.cpp +++ b/src/control/OnscreenTimer.cpp @@ -8,28 +8,35 @@ #include "Script.h" #include "OnscreenTimer.h" +//--MIAMI: file done + void COnscreenTimer::Init() { m_bDisabled = false; - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - m_sEntries[i].m_nTimerOffset = 0; - m_sEntries[i].m_nCounterOffset = 0; - for(uint32 j = 0; j < 10; j++) { - m_sEntries[i].m_aTimerText[j] = 0; - m_sEntries[i].m_aCounterText[j] = 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; + + m_sCounters[i].m_nType = COUNTER_DISPLAY_NUMBER; + m_sCounters[i].m_bProcessed = false; + } + for (uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { + m_sTimers[i].m_nOffset = 0; + + for (uint32 j = 0; j < 10; j++) + m_sTimers[i].m_aText[j] = 0; - m_sEntries[i].m_nType = COUNTER_DISPLAY_NUMBER; - m_sEntries[i].m_bTimerProcessed = false; - m_sEntries[i].m_bCounterProcessed = false; - m_sEntries[i].m_bTimerGoingDown = true; + m_sTimers[i].m_bProcessed = false; + m_sTimers[i].m_bGoingDown = true; } } void COnscreenTimer::Process() { if(!CReplay::IsPlayingBack() && !m_bDisabled) { for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - m_sEntries[i].Process(); + m_sTimers[i].Process(); } } } @@ -38,7 +45,12 @@ void COnscreenTimer::ProcessForDisplay() { if(CHud::m_Wants_To_Draw_Hud) { m_bProcessed = false; for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(m_sEntries[i].ProcessForDisplay()) { + if(m_sTimers[i].ProcessForDisplay()) { + m_bProcessed = true; + } + } + for (uint32 i = 0; i < NUMONSCREENCOUNTERENTRIES; i++) { + if (m_sCounters[i].ProcessForDisplay()) { m_bProcessed = true; } } @@ -46,72 +58,72 @@ void COnscreenTimer::ProcessForDisplay() { } void COnscreenTimer::ClearCounter(uint32 offset) { - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(offset == m_sEntries[i].m_nCounterOffset) { - m_sEntries[i].m_nCounterOffset = 0; - m_sEntries[i].m_aCounterText[0] = 0; - m_sEntries[i].m_nType = COUNTER_DISPLAY_NUMBER; - m_sEntries[i].m_bCounterProcessed = 0; + 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; + m_sCounters[i].m_nType = COUNTER_DISPLAY_NUMBER; + m_sCounters[i].m_bProcessed = 0; } } } void COnscreenTimer::ClearClock(uint32 offset) { for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(offset == m_sEntries[i].m_nTimerOffset) { - m_sEntries[i].m_nTimerOffset = 0; - m_sEntries[i].m_aTimerText[0] = 0; - m_sEntries[i].m_bTimerProcessed = 0; + 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; } } } void COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text, uint16 pos) { - m_sEntries[pos].m_nCounterOffset = offset; - if (m_sEntries[pos].m_aCounterText[0] != '\0') + m_sCounters[pos].m_nOffset = offset; + if (m_sCounters[pos].m_aText[0] != '\0') return; if(text) { - strncpy(m_sEntries[pos].m_aCounterText, text, 10); + strncpy(m_sCounters[pos].m_aText, text, 10); } else { - m_sEntries[pos].m_aCounterText[0] = 0; + m_sCounters[pos].m_aText[0] = 0; } - m_sEntries[pos].m_nType = type; + 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_sEntries[i].m_nTimerOffset == 0) { + if(m_sTimers[i].m_nOffset == 0) { break; } return; } - m_sEntries[i].m_nTimerOffset = offset; - m_sEntries[i].m_bTimerGoingDown = bGoingDown; + m_sTimers[i].m_nOffset = offset; + m_sTimers[i].m_bGoingDown = bGoingDown; if(text) { - strncpy(m_sEntries[i].m_aTimerText, text, 10); + strncpy(m_sTimers[i].m_aText, text, 10); } else { - m_sEntries[i].m_aTimerText[0] = 0; + m_sTimers[i].m_aText[0] = 0; } } void COnscreenTimerEntry::Process() { - if(m_nTimerOffset == 0) { + if(m_nOffset == 0) { return; } - int32* timerPtr = CTheScripts::GetPointerToScriptVariable(m_nTimerOffset); + int32* timerPtr = CTheScripts::GetPointerToScriptVariable(m_nOffset); int32 oldTime = *timerPtr; - if (m_bTimerGoingDown) { + if (m_bGoingDown) { int32 newTime = oldTime - int32(CTimer::GetTimeStepInMilliseconds()); if (newTime < 0) { *timerPtr = 0; - m_bTimerProcessed = 0; - m_nTimerOffset = 0; - m_aTimerText[0] = 0; + m_bProcessed = 0; + m_nOffset = 0; + m_aText[0] = 0; } else { *timerPtr = newTime; @@ -126,32 +138,34 @@ void COnscreenTimerEntry::Process() { } bool COnscreenTimerEntry::ProcessForDisplay() { - m_bTimerProcessed = false; - m_bCounterProcessed = false; + m_bProcessed = false; - if(m_nTimerOffset == 0 && m_nCounterOffset == 0) { + if(m_nOffset == 0) return false; - } - if(m_nTimerOffset != 0) { - m_bTimerProcessed = true; - ProcessForDisplayClock(); - } + m_bProcessed = true; + ProcessForDisplayClock(); + return true; +} - if(m_nCounterOffset != 0) { - m_bCounterProcessed = true; - ProcessForDisplayCounter(); - } +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_nTimerOffset); - sprintf(m_bTimerBuffer, "%02d:%02d", time / 1000 / 60, + uint32 time = *CTheScripts::GetPointerToScriptVariable(m_nOffset); + sprintf(m_bBuffer, "%02d:%02d", time / 1000 / 60, time / 1000 % 60); } -void COnscreenTimerEntry::ProcessForDisplayCounter() { - uint32 counter = *CTheScripts::GetPointerToScriptVariable(m_nCounterOffset); - sprintf(m_bCounterBuffer, "%d", counter); +void COnscreenCounterEntry::ProcessForDisplayCounter() { + uint32 counter = *CTheScripts::GetPointerToScriptVariable(m_nOffset); + sprintf(m_bBuffer, "%d", counter); } |