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/hl2/hud_bonusprogress.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/hl2/hud_bonusprogress.cpp')
| -rw-r--r-- | game/client/hl2/hud_bonusprogress.cpp | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/game/client/hl2/hud_bonusprogress.cpp b/game/client/hl2/hud_bonusprogress.cpp new file mode 100644 index 0000000..c7569e0 --- /dev/null +++ b/game/client/hl2/hud_bonusprogress.cpp @@ -0,0 +1,197 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +// +// BonusProgress.cpp +// +// implementation of CHudBonusProgress class +// +#include "cbase.h" +#include "hud.h" +#include "hud_macros.h" +#include "view.h" + +#include "iclientmode.h" + +#include <KeyValues.h> +#include <vgui/ISurface.h> +#include <vgui/ISystem.h> +#include <vgui_controls/AnimationController.h> + +#include <vgui/ILocalize.h> + +using namespace vgui; + +#include "hudelement.h" +#include "hud_numericdisplay.h" + +#include "convar.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +#define INIT_BONUS_PROGRESS -1 + + +//----------------------------------------------------------------------------- +// Purpose: BonusProgress panel +//----------------------------------------------------------------------------- +class CHudBonusProgress : public CHudElement, public CHudNumericDisplay +{ + DECLARE_CLASS_SIMPLE( CHudBonusProgress, CHudNumericDisplay ); + +public: + CHudBonusProgress( const char *pElementName ); + virtual void Init( void ); + virtual void VidInit( void ); + virtual void Reset( void ); + virtual void OnThink(); + +private: + void SetChallengeLabel( void ); + +private: + // old variables + int m_iBonusProgress; + + int m_iLastChallenge; +}; + +DECLARE_HUDELEMENT( CHudBonusProgress ); + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +CHudBonusProgress::CHudBonusProgress( const char *pElementName ) : CHudElement( pElementName ), CHudNumericDisplay(NULL, "HudBonusProgress") +{ + SetHiddenBits( HIDEHUD_BONUS_PROGRESS ); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CHudBonusProgress::Init() +{ + Reset(); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CHudBonusProgress::Reset() +{ + m_iBonusProgress = INIT_BONUS_PROGRESS; + + C_BasePlayer *local = C_BasePlayer::GetLocalPlayer(); + if ( local ) + m_iLastChallenge = local->GetBonusChallenge(); + + SetChallengeLabel(); + + SetDisplayValue(m_iBonusProgress); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CHudBonusProgress::VidInit() +{ + Reset(); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CHudBonusProgress::OnThink() +{ + C_GameRules *pGameRules = GameRules(); + + if ( !pGameRules ) + { + // Not ready to init! + return; + } + + int newBonusProgress = 0; + int iBonusChallenge = 0; + + C_BasePlayer *local = C_BasePlayer::GetLocalPlayer(); + if ( !local ) + { + // Not ready to init! + return; + } + + // Never below zero + newBonusProgress = MAX( local->GetBonusProgress(), 0 ); + iBonusChallenge = local->GetBonusChallenge(); + + // Only update the fade if we've changed bonusProgress + if ( newBonusProgress == m_iBonusProgress && m_iLastChallenge == iBonusChallenge ) + { + return; + } + + m_iBonusProgress = newBonusProgress; + + if ( m_iLastChallenge != iBonusChallenge ) + { + m_iLastChallenge = iBonusChallenge; + SetChallengeLabel(); + } + + g_pClientMode->GetViewportAnimationController()->StartAnimationSequence("BonusProgressFlash"); + + if ( pGameRules->IsBonusChallengeTimeBased() ) + { + SetIsTime( true ); + SetIndent( false ); + } + else + { + SetIsTime( false ); + SetIndent( true ); + } + + SetDisplayValue(m_iBonusProgress); +} + +void CHudBonusProgress::SetChallengeLabel( void ) +{ + // Blank for no challenge + if ( m_iLastChallenge == 0 ) + { + SetLabelText(L""); + return; + } + + char szBonusTextName[] = "#Valve_Hud_BONUS_PROGRESS00"; + + int iStringLength = Q_strlen( szBonusTextName ); + + szBonusTextName[ iStringLength - 2 ] = ( m_iLastChallenge / 10 ) + '0'; + szBonusTextName[ iStringLength - 1 ] = ( m_iLastChallenge % 10 ) + '0'; + + wchar_t *tempString = g_pVGuiLocalize->Find(szBonusTextName); + + if (tempString) + { + SetLabelText(tempString); + return; + } + + // Couldn't find a special string for this challenge + tempString = g_pVGuiLocalize->Find("#Valve_Hud_BONUS_PROGRESS"); + if (tempString) + { + SetLabelText(tempString); + return; + } + + // Couldn't find any localizable string + SetLabelText(L"BONUS"); +}
\ No newline at end of file |