hl2_src-leak-2017/src/game/client/tf2/hud_resources.cpp

131 lines
4.0 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Hud display of the local player's resource counts
//
// $NoKeywords: $
//=============================================================================//
#include "cbase.h"
#include "hud_numeric.h"
#include "c_basetfplayer.h"
#include "hud_macros.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CHudResources : public CHudNumeric
{
DECLARE_CLASS_SIMPLE( CHudResources, CHudNumeric )
public:
CHudResources( const char *pElementName );
virtual const char *GetLabelText() { return m_szResourcesLabel; }
virtual const char *GetPulseEvent( bool increment ) { return increment ? "ResourceIncrement" : "ResourceDecrement"; }
virtual bool GetValue( char *val, int maxlen );
private:
bool GetResourceCount( int& value );
CPanelAnimationStringVar( 128, m_szResourcesLabel, "ResourcesLabel", "Resources" );
};
DECLARE_HUDELEMENT( CHudResources );
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CHudResources::CHudResources( const char *pElementName ) : CHudNumeric( pElementName, "HudResources")
{
SetHiddenBits( HIDEHUD_HEALTH | HIDEHUD_PLAYERDEAD );
}
bool CHudResources::GetValue( char *val, int maxlen )
{
int bank = 0;
if ( !GetResourceCount( bank ) )
return false;
Q_snprintf( val, maxlen, "%i", bank );
return true;
}
bool CHudResources::GetResourceCount( int& value )
{
C_BaseTFPlayer *pPlayer = C_BaseTFPlayer::GetLocalPlayer();
if ( !pPlayer )
return false;
if ( pPlayer->GetTeamNumber() == 0)
return false;
value = pPlayer->m_TFLocal.m_iBankResources;
return true;
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CHudResourcesPickup : public CHudNumeric
{
DECLARE_CLASS_SIMPLE( CHudResourcesPickup, CHudNumeric )
public:
CHudResourcesPickup( const char *pElementName );
virtual void Init( void );
virtual const char *GetLabelText() { return m_szResourcesPickupLabel; }
virtual const char *GetPulseEvent( bool increment ) { return "ResourcePickup"; }
virtual bool GetValue( char *val, int maxlen );
// Handler for our message
void MsgFunc_PickupRes( bf_read &msg );
private:
int m_iPickupAmount;
CPanelAnimationStringVar( 128, m_szResourcesPickupLabel, "ResourcesPickupLabel", "" );
};
DECLARE_HUDELEMENT( CHudResourcesPickup );
DECLARE_HUD_MESSAGE( CHudResourcesPickup, PickupRes );
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CHudResourcesPickup::CHudResourcesPickup( const char *pElementName ) : CHudNumeric( pElementName, "HudResourcesPickup")
{
m_iPickupAmount = 0;
SetHiddenBits( HIDEHUD_HEALTH | HIDEHUD_PLAYERDEAD );
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CHudResourcesPickup::Init( void )
{
HOOK_HUD_MESSAGE( CHudResourcesPickup, PickupRes );
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CHudResourcesPickup::GetValue( char *val, int maxlen )
{
if ( !m_iPickupAmount )
return false;
Q_snprintf( val, maxlen, "+%i", m_iPickupAmount );
return true;
}
//-----------------------------------------------------------------------------
// Purpose: Message handler for PickupRes message
//-----------------------------------------------------------------------------
void CHudResourcesPickup::MsgFunc_PickupRes( bf_read &msg )
{
m_iPickupAmount = msg.ReadByte();
ForcePulse();
}