You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.1 KiB
109 lines
2.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
#include "hudelement.h" |
|
#include <vgui_controls/Panel.h> |
|
#include <vgui/ISurface.h> |
|
#include "clientmode_csnormal.h" |
|
#include "c_cs_player.h" |
|
#include "cs_gamerules.h" |
|
|
|
#include "c_cs_hostage.h" |
|
#include "c_plantedc4.h" |
|
|
|
class CHudScenarioIcon : public CHudElement, public vgui::Panel |
|
{ |
|
public: |
|
DECLARE_CLASS_SIMPLE( CHudScenarioIcon, vgui::Panel ); |
|
|
|
CHudScenarioIcon( const char *name ); |
|
|
|
virtual bool ShouldDraw(); |
|
virtual void Paint(); |
|
|
|
private: |
|
CPanelAnimationVar( Color, m_clrIcon, "IconColor", "IconColor" ); |
|
|
|
CHudTexture *m_pC4Icon; |
|
CHudTexture *m_pHostageIcon; |
|
}; |
|
|
|
|
|
DECLARE_HUDELEMENT( CHudScenarioIcon ); |
|
|
|
|
|
CHudScenarioIcon::CHudScenarioIcon( const char *pName ) : |
|
vgui::Panel( NULL, "HudScenarioIcon" ), CHudElement( pName ) |
|
{ |
|
SetParent( g_pClientMode->GetViewport() ); |
|
m_pC4Icon = NULL; |
|
m_pHostageIcon = NULL; |
|
|
|
SetHiddenBits( HIDEHUD_PLAYERDEAD ); |
|
} |
|
|
|
bool CHudScenarioIcon::ShouldDraw() |
|
{ |
|
C_CSPlayer *pPlayer = C_CSPlayer::GetLocalCSPlayer(); |
|
return pPlayer && pPlayer->IsAlive(); |
|
} |
|
|
|
void CHudScenarioIcon::Paint() |
|
{ |
|
// If there is a bomb planted, draw that |
|
if( g_PlantedC4s.Count() > 0 ) |
|
{ |
|
if ( !m_pC4Icon ) |
|
{ |
|
m_pC4Icon = gHUD.GetIcon( "scenario_c4" ); |
|
} |
|
|
|
if ( m_pC4Icon ) |
|
{ |
|
int x, y, w, h; |
|
GetBounds( x, y, w, h ); |
|
|
|
C_PlantedC4 *pC4 = g_PlantedC4s[0]; |
|
|
|
Color c = m_clrIcon; |
|
|
|
c[3] = 80; |
|
|
|
if( pC4->m_flNextGlow - gpGlobals->curtime < 0.1 ) |
|
{ |
|
c[3] = 255; |
|
} |
|
|
|
if( pC4->IsBombActive() ) |
|
m_pC4Icon->DrawSelf( 0, 0, h, h, c ); //draw it square! |
|
} |
|
} |
|
|
|
CCSGameRules *pRules = CSGameRules(); |
|
|
|
// If there are hostages, draw how many there are |
|
if( pRules && pRules->GetNumHostagesRemaining() ) |
|
{ |
|
if ( !m_pHostageIcon ) |
|
{ |
|
m_pHostageIcon = gHUD.GetIcon( "scenario_hostage" ); |
|
} |
|
|
|
if( m_pHostageIcon ) |
|
{ |
|
int xpos = 0; |
|
int iconWidth = m_pHostageIcon->Width(); |
|
|
|
for(int i=0;i<pRules->GetNumHostagesRemaining();i++) |
|
{ |
|
m_pHostageIcon->DrawSelf( xpos, 0, m_clrIcon ); |
|
xpos += iconWidth; |
|
} |
|
} |
|
} |
|
} |
|
|
|
|