Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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; } } } }
|