mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-14 20:56:56 +00:00
add hl1,portal,dod source code
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
//
|
||||
// Health.cpp
|
||||
//
|
||||
// implementation of CHudHealth class
|
||||
//
|
||||
#include "cbase.h"
|
||||
#include "hud.h"
|
||||
#include "hud_macros.h"
|
||||
#include "view.h"
|
||||
|
||||
#include "iclientmode.h"
|
||||
|
||||
#include <KeyValues.h>
|
||||
#include <vgui/ISurface.h>
|
||||
#include <vgui/ISystem.h>
|
||||
#include <vgui_controls/AnimationController.h>
|
||||
#include <vgui_controls/Panel.h>
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
#include "hudelement.h"
|
||||
#include "convar.h"
|
||||
#include "c_dod_player.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Health panel
|
||||
//-----------------------------------------------------------------------------
|
||||
class CHudHealth : public CHudElement, public vgui::Panel
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( CHudHealth, vgui::Panel );
|
||||
|
||||
public:
|
||||
CHudHealth( const char *pElementName );
|
||||
virtual void Init( void );
|
||||
virtual void VidInit( void );
|
||||
virtual void Reset( void );
|
||||
virtual void OnThink();
|
||||
|
||||
virtual bool ShouldDraw( void );
|
||||
virtual void Paint( void );
|
||||
virtual void ApplySchemeSettings( IScheme *scheme );
|
||||
|
||||
private:
|
||||
int m_iHealth;
|
||||
int m_iStamina;
|
||||
|
||||
CHudTexture *m_pIconHealthBar;
|
||||
CHudTexture *m_pIconHealthOverlay;
|
||||
CHudTexture *m_pIconBG;
|
||||
CHudTexture *m_pIconStaminaBar;
|
||||
};
|
||||
|
||||
//DECLARE_HUDELEMENT( CHudHealth );
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CHudHealth::CHudHealth( const char *pElementName ) : CHudElement( pElementName ), BaseClass(NULL, "HudHealth")
|
||||
{
|
||||
SetParent( g_pClientMode->GetViewport() );
|
||||
SetHiddenBits( HIDEHUD_HEALTH | HIDEHUD_PLAYERDEAD );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CHudHealth::Init()
|
||||
{
|
||||
m_iHealth = 100;
|
||||
}
|
||||
|
||||
void CHudHealth::ApplySchemeSettings( IScheme *scheme )
|
||||
{
|
||||
BaseClass::ApplySchemeSettings( scheme );
|
||||
|
||||
if( !m_pIconHealthBar )
|
||||
{
|
||||
m_pIconHealthBar = gHUD.GetIcon( "hud_healthbar" );
|
||||
}
|
||||
|
||||
if( !m_pIconHealthOverlay )
|
||||
{
|
||||
m_pIconHealthOverlay = gHUD.GetIcon( "hud_health_overlay" );
|
||||
}
|
||||
|
||||
if( !m_pIconBG )
|
||||
{
|
||||
m_pIconBG = gHUD.GetIcon( "hud_main" );
|
||||
}
|
||||
|
||||
if( !m_pIconStaminaBar )
|
||||
{
|
||||
m_pIconStaminaBar = gHUD.GetIcon( "hud_staminabar" );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CHudHealth::Reset()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CHudHealth::VidInit()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CHudHealth::OnThink()
|
||||
{
|
||||
int realHealth = 0;
|
||||
C_DODPlayer *local = C_DODPlayer::GetLocalDODPlayer();
|
||||
if ( local )
|
||||
{
|
||||
// Never below zero
|
||||
realHealth = MAX( local->GetHealth(), 0 );
|
||||
|
||||
m_iStamina = local->m_Shared.GetStamina();
|
||||
}
|
||||
|
||||
// Only update the fade if we've changed health
|
||||
if ( realHealth == m_iHealth )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
g_pClientMode->GetViewportAnimationController()->SetAutoReloadScript(true);
|
||||
#endif
|
||||
|
||||
m_iHealth = realHealth;
|
||||
}
|
||||
|
||||
bool CHudHealth::ShouldDraw( void )
|
||||
{
|
||||
// No local player yet?
|
||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||
if ( !pPlayer )
|
||||
return false;
|
||||
|
||||
if( pPlayer->GetTeamNumber() != TEAM_ALLIES &&
|
||||
pPlayer->GetTeamNumber() != TEAM_AXIS )
|
||||
return false;
|
||||
|
||||
return CHudElement::ShouldDraw();
|
||||
}
|
||||
|
||||
void CHudHealth::Paint( void )
|
||||
{
|
||||
int x, y, w, h;
|
||||
GetBounds( x, y, w, h );
|
||||
|
||||
Color clrIcon(255,255,255,255);
|
||||
|
||||
int xpos = 0;
|
||||
int ypos = h - m_pIconBG->Height();
|
||||
|
||||
m_pIconBG->DrawSelf( xpos, ypos, clrIcon );
|
||||
|
||||
int nOffset = m_pIconHealthOverlay->Height() * ( 1.0 - ( (float)m_iHealth / 100.0 ) );
|
||||
if ( nOffset < m_pIconHealthOverlay->Height() )
|
||||
{
|
||||
m_pIconHealthOverlay->DrawSelfCropped( xpos + 55, ypos + 27, 0, 0, m_pIconHealthOverlay->Width(), nOffset, clrIcon );
|
||||
}
|
||||
|
||||
nOffset = m_pIconHealthBar->Height() * ( 1.0 - ( (float)m_iHealth / 100.0 ) );
|
||||
if ( nOffset < m_pIconHealthBar->Height() )
|
||||
{
|
||||
m_pIconHealthBar->DrawSelfCropped( xpos + 99, ypos + 27 + nOffset, 0, nOffset, m_pIconHealthBar->Width(), m_pIconHealthBar->Height() - nOffset, clrIcon );
|
||||
}
|
||||
|
||||
nOffset = m_pIconStaminaBar->Height() * ( 1.0 - ( (float)m_iStamina / 100.0 ) );
|
||||
if ( nOffset < m_pIconStaminaBar->Height() )
|
||||
{
|
||||
m_pIconStaminaBar->DrawSelfCropped( xpos + 8, ypos + 12 + nOffset, 0, nOffset, m_pIconStaminaBar->Width(), m_pIconStaminaBar->Height() - nOffset, clrIcon );
|
||||
}
|
||||
|
||||
BaseClass::Paint();
|
||||
}
|
||||
Reference in New Issue
Block a user