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.
185 lines
4.7 KiB
185 lines
4.7 KiB
3 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
|
||
|
#include "cbase.h"
|
||
|
#include "hudelement.h"
|
||
|
#include <vgui_controls/EditablePanel.h>
|
||
|
#include <vgui_controls/ImagePanel.h>
|
||
|
#include <vgui/ISurface.h>
|
||
|
#include "c_dod_player.h"
|
||
|
#include "clientmode_dod.h"
|
||
|
|
||
|
#include "dodcornercutpanel.h"
|
||
|
|
||
|
#include "c_dod_objective_resource.h"
|
||
|
#include "c_dod_playerresource.h"
|
||
|
|
||
|
#include "dod_hud_playerstatus_ammo.h"
|
||
|
#include "dod_hud_playerstatus_health.h"
|
||
|
#include "dod_hud_playerstatus_weapon.h"
|
||
|
#include "dod_hud_playerstatus_stamina.h"
|
||
|
#include "dod_hud_playerstatus_mgheat.h"
|
||
|
#include "dod_hud_playerstatus_fireselect.h"
|
||
|
#include "dod_hud_playerstatus_tnt.h"
|
||
|
|
||
|
class CDoDHudPlayerStatusPanel : public CHudElement, public vgui::EditablePanel
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_CLASS_SIMPLE( CDoDHudPlayerStatusPanel, vgui::EditablePanel );
|
||
|
|
||
|
CDoDHudPlayerStatusPanel( const char *pElementName );
|
||
|
|
||
|
virtual void Init();
|
||
|
virtual void OnThink();
|
||
|
virtual void PerformLayout();
|
||
|
virtual void ApplySchemeSettings( IScheme *pScheme );
|
||
|
|
||
|
private:
|
||
|
|
||
|
CDoDCutEditablePanel *m_pMainBar;
|
||
|
ImagePanel *m_pAlliesIcon;
|
||
|
ImagePanel *m_pAxisIcon;
|
||
|
CDoDHudAmmo *m_pAmmoStatus;
|
||
|
CDoDHudHealth *m_pHealthStatus;
|
||
|
CDoDHudCurrentWeapon *m_pCurrentWeapon;
|
||
|
CDoDHudStamina *m_pStamina;
|
||
|
CDoDHudMGHeat *m_pMGHeat;
|
||
|
CDoDHudFireSelect *m_pFireSelect;
|
||
|
CDoDHudTNT *m_pTNT;
|
||
|
};
|
||
|
|
||
|
DECLARE_HUDELEMENT( CDoDHudPlayerStatusPanel );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Constructor
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CDoDHudPlayerStatusPanel::CDoDHudPlayerStatusPanel( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "HudPlayerStatusPanel" )
|
||
|
{
|
||
|
SetParent( g_pClientMode->GetViewport() );
|
||
|
|
||
|
m_pMainBar = new CDoDCutEditablePanel( this, "PlayerStatusMainBackground" );
|
||
|
m_pAlliesIcon = new ImagePanel( this, "PlayerStatusAlliesIcon" );
|
||
|
m_pAxisIcon = new ImagePanel( this, "PlayerStatusAxisIcon" );
|
||
|
m_pAmmoStatus = new CDoDHudAmmo( this, "PlayerStatusAmmo" );
|
||
|
m_pCurrentWeapon = new CDoDHudCurrentWeapon( this, "PlayerStatusCurrentWeapon" );
|
||
|
m_pHealthStatus = new CDoDHudHealth( this, "PlayerStatusHealth" );
|
||
|
m_pStamina = new CDoDHudStamina( this, "PlayerStatusStamina" );
|
||
|
m_pMGHeat = new CDoDHudMGHeat( this, "PlayerStatusMGHeat" );
|
||
|
m_pFireSelect = new CDoDHudFireSelect( this, "PlayerStatusFireSelect" );
|
||
|
m_pTNT = new CDoDHudTNT( this, "PlayerStatusTNT" );
|
||
|
}
|
||
|
|
||
|
void CDoDHudPlayerStatusPanel::ApplySchemeSettings( IScheme *pScheme )
|
||
|
{
|
||
|
// load control settings...
|
||
|
LoadControlSettings( "resource/UI/HudPlayerStatusPanel.res" );
|
||
|
|
||
|
BaseClass::ApplySchemeSettings( pScheme );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDoDHudPlayerStatusPanel::Init()
|
||
|
{
|
||
|
if ( m_pMainBar )
|
||
|
{
|
||
|
m_pMainBar->SetVisible( true );
|
||
|
}
|
||
|
|
||
|
if ( m_pStamina )
|
||
|
{
|
||
|
m_pStamina->SetVisible( true );
|
||
|
}
|
||
|
|
||
|
if ( m_pAlliesIcon )
|
||
|
{
|
||
|
m_pAlliesIcon->SetVisible( false );
|
||
|
}
|
||
|
|
||
|
if ( m_pAxisIcon )
|
||
|
{
|
||
|
m_pAxisIcon->SetVisible( false );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDoDHudPlayerStatusPanel::PerformLayout()
|
||
|
{
|
||
|
BaseClass::PerformLayout();
|
||
|
|
||
|
int x, y, w, t;
|
||
|
GetBounds( x, y, w, t );
|
||
|
|
||
|
if ( w != ScreenWidth() )
|
||
|
{
|
||
|
// doing this because of the 16:9 and 16:10 resolutions (VGUI doesn't scale properly for them)
|
||
|
SetBounds( x, y, ScreenWidth(), t );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDoDHudPlayerStatusPanel::OnThink()
|
||
|
{
|
||
|
BaseClass::OnThink();
|
||
|
|
||
|
C_DODPlayer *pPlayer = C_DODPlayer::GetLocalDODPlayer();
|
||
|
|
||
|
if ( pPlayer )
|
||
|
{
|
||
|
// turn off the panel and children if the player is dead
|
||
|
if ( !pPlayer->IsAlive() )
|
||
|
{
|
||
|
if ( IsVisible() )
|
||
|
{
|
||
|
SetVisible( false );
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( !IsVisible() )
|
||
|
{
|
||
|
SetVisible( true );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// set our team icon
|
||
|
int nTeam = pPlayer->GetTeamNumber();
|
||
|
|
||
|
switch( nTeam )
|
||
|
{
|
||
|
case TEAM_AXIS:
|
||
|
if ( m_pAlliesIcon && m_pAlliesIcon->IsVisible() )
|
||
|
{
|
||
|
m_pAlliesIcon->SetVisible( false );
|
||
|
}
|
||
|
if ( m_pAxisIcon && !m_pAxisIcon->IsVisible() )
|
||
|
{
|
||
|
m_pAxisIcon->SetVisible( true );
|
||
|
}
|
||
|
break;
|
||
|
case TEAM_ALLIES:
|
||
|
default:
|
||
|
if ( m_pAlliesIcon && !m_pAlliesIcon->IsVisible() )
|
||
|
{
|
||
|
m_pAlliesIcon->SetVisible( true );
|
||
|
}
|
||
|
if ( m_pAxisIcon && m_pAxisIcon->IsVisible() )
|
||
|
{
|
||
|
m_pAxisIcon->SetVisible( false );
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|