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.
123 lines
3.1 KiB
123 lines
3.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//----------------------------------------------------------------------------- |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#include "cbase.h" |
|
#include "playeroverlayhealth.h" |
|
#include "playeroverlay.h" |
|
#include "CommanderOverlay.h" |
|
#include "hud_commander_statuspanel.h" |
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Output : |
|
//----------------------------------------------------------------------------- |
|
CHudPlayerOverlayHealth::CHudPlayerOverlayHealth( CHudPlayerOverlay *baseOverlay ) |
|
: BaseClass( NULL, "CHudPlayerOverlayHealth" ) |
|
{ |
|
m_pBaseOverlay = baseOverlay; |
|
|
|
SetHealth( 0 ); |
|
|
|
SetPaintBackgroundEnabled( false ); |
|
// Send mouse inputs (but not cursorenter/exit for now) up to parent |
|
SetReflectMouse( true ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Output : |
|
//----------------------------------------------------------------------------- |
|
CHudPlayerOverlayHealth::~CHudPlayerOverlayHealth( void ) |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Parse values from the file |
|
//----------------------------------------------------------------------------- |
|
|
|
bool CHudPlayerOverlayHealth::Init( KeyValues* pInitData ) |
|
{ |
|
if (!pInitData) |
|
return false; |
|
|
|
if (!ParseRGBA(pInitData, "fgcolor", m_fgColor )) |
|
return false; |
|
|
|
if (!ParseRGBA(pInitData, "bgcolor", m_bgColor )) |
|
return false; |
|
|
|
int x, y, w, h; |
|
if (!ParseRect(pInitData, "position", x, y, w, h )) |
|
return false; |
|
SetPos( x, y ); |
|
SetSize( w, h ); |
|
|
|
return true; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : health - |
|
//----------------------------------------------------------------------------- |
|
|
|
void CHudPlayerOverlayHealth::SetHealth( float health ) |
|
{ |
|
m_Health = health; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CHudPlayerOverlayHealth::Paint( void ) |
|
{ |
|
int w, h; |
|
|
|
GetSize( w, h ); |
|
|
|
m_pBaseOverlay->SetColorLevel( this, m_fgColor, m_bgColor ); |
|
|
|
// Use a color related to health value.... |
|
vgui::surface()->DrawSetColor( 0, 255, 0, 255 * m_pBaseOverlay->GetAlphaFrac() ); |
|
|
|
int drawwidth; |
|
|
|
float frac = m_Health; |
|
frac = MIN( 1.0, m_Health ); |
|
frac = MAX( 0.0, m_Health ); |
|
|
|
drawwidth = frac * w; |
|
|
|
vgui::surface()->DrawFilledRect( 0, 0, drawwidth, h/2 ); |
|
|
|
// This is the hurt part |
|
if (w != drawwidth) |
|
{ |
|
vgui::surface()->DrawSetColor( 255, 64, 64, 255 * m_pBaseOverlay->GetAlphaFrac() ); |
|
vgui::surface()->DrawFilledRect( drawwidth, 0, w, h/2 ); |
|
} |
|
} |
|
|
|
void CHudPlayerOverlayHealth::OnCursorEntered() |
|
{ |
|
if ( m_pBaseOverlay->GetMouseOverText() ) |
|
{ |
|
StatusPrint( TYPE_HINT, "%s", m_pBaseOverlay->GetMouseOverText() ); |
|
} |
|
} |
|
|
|
void CHudPlayerOverlayHealth::OnCursorExited() |
|
{ |
|
if ( m_pBaseOverlay->GetMouseOverText() ) |
|
{ |
|
StatusClear(); |
|
} |
|
} |