diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/hud_basetimer.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/hud_basetimer.cpp')
| -rw-r--r-- | game/client/hud_basetimer.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/game/client/hud_basetimer.cpp b/game/client/hud_basetimer.cpp new file mode 100644 index 0000000..d666268 --- /dev/null +++ b/game/client/hud_basetimer.cpp @@ -0,0 +1,84 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Draws a timer in the format "Minutes:Seconds" +// Seconds are padded with zeros +// +//=============================================================================// + +#include "cbase.h" +#include "hudelement.h" +#include <vgui_controls/Panel.h> +#include <vgui/ISurface.h> +#include "hud_basetimer.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +using namespace vgui; + +CHudBaseTimer::CHudBaseTimer(vgui::Panel *parent, const char *name) : BaseClass(parent, name) +{ + m_iMinutes = 0; + m_iSeconds = 0; + SetLabelText(L""); +} + +void CHudBaseTimer::SetMinutes(int minutes) +{ + m_iMinutes = minutes; +} + +void CHudBaseTimer::SetSeconds(int seconds) +{ + m_iSeconds = seconds; +} + +void CHudBaseTimer::PaintTime(HFont font, int xpos, int ypos, int mins, int secs) +{ + surface()->DrawSetTextFont(font); + wchar_t unicode[6]; + V_snwprintf(unicode, ARRAYSIZE(unicode), L"%d:%.2d", mins, secs); + + surface()->DrawSetTextPos(xpos, ypos); + surface()->DrawUnicodeString( unicode ); +} + +void CHudBaseTimer::Paint() +{ + float alpha = m_flAlphaOverride / 255; + Color fgColor = GetFgColor(); + fgColor[3] *= alpha; + SetFgColor( fgColor ); + + surface()->DrawSetTextColor(GetFgColor()); + PaintTime( m_hNumberFont, digit_xpos, digit_ypos, m_iMinutes, m_iSeconds ); + + // draw the overbright blur + for (float fl = m_flBlur; fl > 0.0f; fl -= 1.0f) + { + if (fl >= 1.0f) + { + PaintTime(m_hNumberGlowFont, digit_xpos, digit_ypos, m_iMinutes, m_iSeconds); + } + else + { + // draw a percentage of the last one + Color col = GetFgColor(); + col[3] *= fl; + surface()->DrawSetTextColor(col); + PaintTime(m_hNumberGlowFont, digit_xpos, digit_ypos, m_iMinutes, m_iSeconds); + } + } + + BaseClass::PaintLabel(); +} + +void CHudBaseTimer::SetToPrimaryColor() +{ + SetFgColor(m_TextColor); +} + +void CHudBaseTimer::SetToSecondaryColor() +{ + SetFgColor(m_FlashColor); +} |