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/portal/vgui_neurotoxin_countdown_screen.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/portal/vgui_neurotoxin_countdown_screen.cpp')
| -rw-r--r-- | game/client/portal/vgui_neurotoxin_countdown_screen.cpp | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/game/client/portal/vgui_neurotoxin_countdown_screen.cpp b/game/client/portal/vgui_neurotoxin_countdown_screen.cpp new file mode 100644 index 0000000..75a26bc --- /dev/null +++ b/game/client/portal/vgui_neurotoxin_countdown_screen.cpp @@ -0,0 +1,186 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +#include "cbase.h" +#include "c_vguiscreen.h" +#include "vgui_controls/Label.h" +#include "vgui_bitmappanel.h" +#include <vgui/IVGui.h> +#include "c_neurotoxin_countdown.h" +#include "ienginevgui.h" +#include "fmtstr.h" +#include "vgui_controls/ImagePanel.h" + +using namespace vgui; + + +//----------------------------------------------------------------------------- +// Control screen +//----------------------------------------------------------------------------- +class CNeurotoxinCountdownScreen : public CVGuiScreenPanel +{ + DECLARE_CLASS( CNeurotoxinCountdownScreen, CVGuiScreenPanel ); + +public: + CNeurotoxinCountdownScreen( vgui::Panel *parent, const char *panelName ); + + virtual void ApplySchemeSettings( IScheme *pScheme ); + + virtual bool Init( KeyValues* pKeyValues, VGuiScreenInitData_t* pInitData ); + virtual void OnTick(); + +private: + void Update( C_NeurotoxinCountdown *pNeurotoxinCountdown ); + +private: + vgui::Label *m_pDisplayTextLabel; + + int iLastSlideIndex; + + Color m_cDefault; + Color m_cInvisible; + + bool bIsAlreadyVisible; + + //ImagePanel *(m_pNumberImages[ 6 ][ 10 ]); +}; + + +DECLARE_VGUI_SCREEN_FACTORY( CNeurotoxinCountdownScreen, "neurotoxin_countdown_screen" ); + +//----------------------------------------------------------------------------- +// Constructor: +//----------------------------------------------------------------------------- +CNeurotoxinCountdownScreen::CNeurotoxinCountdownScreen( vgui::Panel *parent, const char *panelName ) + : BaseClass( parent, "CNeurotoxinCountdownScreen", vgui::scheme()->LoadSchemeFromFileEx( enginevgui->GetPanel( PANEL_CLIENTDLL ), "resource/NeurotoxinCountdownScreen.res", "NeuroToxinScreen" ) ) +{ + m_pDisplayTextLabel = new vgui::Label( this, "NumberDisplay", "x" ); + iLastSlideIndex = 0; +} + +void CNeurotoxinCountdownScreen::ApplySchemeSettings( IScheme *pScheme ) +{ + assert( pScheme ); + + m_cDefault = pScheme->GetColor( "CNeurotoxinCountdownScreen_Default", GetFgColor() ); + m_cInvisible = Color( 0, 0, 0, 0 ); + + m_pDisplayTextLabel->SetFgColor( m_cDefault ); +} + +//----------------------------------------------------------------------------- +// Initialization +//----------------------------------------------------------------------------- +bool CNeurotoxinCountdownScreen::Init( KeyValues* pKeyValues, VGuiScreenInitData_t* pInitData ) +{ + // Make sure we get ticked... + vgui::ivgui()->AddTickSignal( GetVPanel() ); + + if (!BaseClass::Init(pKeyValues, pInitData)) + return false; + + //for ( int iDigit = 0; iDigit < 6; ++iDigit ) + //{ + // for ( int iNumber = 0; iNumber < 6; ++iNumber ) + // { + // m_pNumberImages[ iDigit ][ iNumber ] = SETUP_PANEL( new ImagePanel( this, "SlideshowImage" ) ); + // m_pNumberImages[ iDigit ][ iNumber ]->SetImage( "" ); + // m_pNumberImages[ iDigit ][ iNumber ]->SetZPos( -2 ); + // m_pNumberImages[ iDigit ][ iNumber ]->SetVisible( false ); + // } + //} + + return true; +} + +//----------------------------------------------------------------------------- +// Update the display string +//----------------------------------------------------------------------------- +void CNeurotoxinCountdownScreen::OnTick() +{ + BaseClass::OnTick(); + + if ( g_NeurotoxinCountdowns.Count() <= 0 ) + return; + + C_NeurotoxinCountdown *pNeurotoxinCountdown = NULL; + + for ( int iDisplayScreens = 0; iDisplayScreens < g_NeurotoxinCountdowns.Count(); ++iDisplayScreens ) + { + C_NeurotoxinCountdown *pNeurotoxinCountdownTemp = g_NeurotoxinCountdowns[ iDisplayScreens ]; + if ( pNeurotoxinCountdownTemp && pNeurotoxinCountdownTemp->IsEnabled() ) + { + pNeurotoxinCountdown = pNeurotoxinCountdownTemp; + break; + } + } + + if( !pNeurotoxinCountdown ) + { + // All display screens are disabled + if ( bIsAlreadyVisible ) + { + SetVisible( false ); + bIsAlreadyVisible = false; + } + return; + } + + if ( !bIsAlreadyVisible ) + { + SetVisible( true ); + bIsAlreadyVisible = true; + } + + Update( pNeurotoxinCountdown ); +} + +void CNeurotoxinCountdownScreen::Update( C_NeurotoxinCountdown *pNeurotoxinCountdown ) +{ + char szBuff[ 256 ]; + + char szMinutesBuff[ 4 ]; + char szSecondsBuff[ 4 ]; + char szMillisecondsBuff[ 4 ]; + + int iMinutes = pNeurotoxinCountdown->GetMinutes(); + int iSeconds = pNeurotoxinCountdown->GetSeconds(); + int iMilliseconds; + + if ( iMinutes <= 0 && iSeconds <= 0 ) + { + iMinutes = 0; + iSeconds = 0; + iMilliseconds = 0; + + // Blink! + m_pDisplayTextLabel->SetVisible( static_cast<int>( gpGlobals->curtime * 10.0f ) % 2 == 0 ); + } + else + { + iMilliseconds = pNeurotoxinCountdown->GetMilliseconds(); + m_pDisplayTextLabel->SetVisible( true ); + } + + if ( iMinutes < 10 ) + sprintf( szMinutesBuff, "0%i", iMinutes ); + else + sprintf( szMinutesBuff, "%i", iMinutes ); + + if ( iSeconds < 10 ) + sprintf( szSecondsBuff, "0%i", iSeconds ); + else + sprintf( szSecondsBuff, "%i", iSeconds ); + + if ( iMilliseconds < 10 ) + sprintf( szMillisecondsBuff, "0%i", iMilliseconds ); + else + sprintf( szMillisecondsBuff, "%i", iMilliseconds ); + + sprintf( szBuff, "%s:%s:%s", szMinutesBuff, szSecondsBuff, szMillisecondsBuff ); + m_pDisplayTextLabel->SetText( szBuff ); +} |