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:
//
// $NoKeywords: $
//=============================================================================
#include "cbase.h"
#include "hud.h"
#include "hudelement.h"
#include "c_tf_player.h"
#include "iclientmode.h"
#include "ienginevgui.h"
#include <vgui/ILocalize.h>
#include <vgui/ISurface.h>
#include <vgui/IVGui.h>
#include <vgui_controls/Label.h>
#include <vgui_controls/EditablePanel.h>
#include "tf_imagepanel.h"
#include "tf_gamerules.h"
#include "c_tf_team.h"
#include "tf_hud_freezepanel.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
using namespace vgui;
extern ConVar tf_arena_preround_time;
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CHudArenaCapPointCountdown : public CHudElement, public EditablePanel { DECLARE_CLASS_SIMPLE( CHudArenaCapPointCountdown, EditablePanel );
public: CHudArenaCapPointCountdown( const char *pElementName );
virtual void ApplySchemeSettings( IScheme *scheme ); virtual void OnTick( void ); virtual bool ShouldDraw( void ); virtual bool IsVisible( void );
private:
bool m_bFire5SecRemain; bool m_bFire4SecRemain; bool m_bFire3SecRemain; bool m_bFire2SecRemain; bool m_bFire1SecRemain; bool m_bFire0SecRemain;
};
DECLARE_HUDELEMENT( CHudArenaCapPointCountdown );
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CHudArenaCapPointCountdown::CHudArenaCapPointCountdown( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "HudArenaCapPointCountdown" ) { Panel *pParent = g_pClientMode->GetViewport(); SetParent( pParent );
SetHiddenBits( HIDEHUD_MISCSTATUS );
vgui::ivgui()->AddTickSignal( GetVPanel() ); SetVisible( true );
m_bFire5SecRemain = true; m_bFire4SecRemain = true; m_bFire3SecRemain = true; m_bFire2SecRemain = true; m_bFire1SecRemain = true; m_bFire0SecRemain = true;
RegisterForRenderGroup( "mid" ); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CHudArenaCapPointCountdown::ApplySchemeSettings( IScheme *pScheme ) { // load control settings...
LoadControlSettings( "resource/UI/HudArenaCapPointCountdown.res" );
BaseClass::ApplySchemeSettings( pScheme );
SetVisible( true ); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CHudArenaCapPointCountdown::IsVisible( void ) { if ( IsInFreezeCam() == true ) return false;
if ( ShouldDraw() == false ) return false;
return BaseClass::IsVisible(); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CHudArenaCapPointCountdown::OnTick( void ) { BaseClass::OnTick();
if ( TFGameRules() == NULL || ( TFGameRules() && TFGameRules()->IsInArenaMode() == false ) ) { SetVisible( false ); return; }
if ( TFGameRules()->State_Get() != GR_STATE_STALEMATE || ShouldDraw() == false ) { SetVisible( false ); return; }
C_TFPlayer *pLocalPlayer = C_TFPlayer::GetLocalTFPlayer();
if ( !pLocalPlayer ) { SetVisible( false ); return; }
int iTimeLeft = ceil( TFGameRules()->GetCapturePointTime() - gpGlobals->curtime );
if ( iTimeLeft > 5 || iTimeLeft <= 0 ) { if ( iTimeLeft <= 0 && m_bFire0SecRemain ) { m_bFire0SecRemain = false; pLocalPlayer->EmitSound( "Announcer.AM_CapEnabledRandom" ); }
m_bFire5SecRemain = true; m_bFire4SecRemain = true; m_bFire3SecRemain = true; m_bFire2SecRemain = true; m_bFire1SecRemain = true; SetVisible( false ); return; }
SetVisible( true );
wchar_t wzTimeLeft[128]; _snwprintf( wzTimeLeft, ARRAYSIZE( wzTimeLeft ), L"%i", iTimeLeft );
SetDialogVariable( "capturetime", wzTimeLeft );
if ( iTimeLeft <= 5 && m_bFire5SecRemain ) { m_bFire5SecRemain = false; pLocalPlayer->EmitSound( "Announcer.RoundBegins5Seconds" ); } else if ( iTimeLeft <= 4 && m_bFire4SecRemain ) { m_bFire4SecRemain = false; pLocalPlayer->EmitSound( "Announcer.RoundBegins4Seconds" ); } else if ( iTimeLeft <= 3 && m_bFire3SecRemain ) { m_bFire3SecRemain = false; pLocalPlayer->EmitSound( "Announcer.RoundBegins3Seconds" ); } else if ( iTimeLeft <= 2 && m_bFire2SecRemain ) { m_bFire2SecRemain = false; pLocalPlayer->EmitSound( "Announcer.RoundBegins2Seconds" ); } else if ( iTimeLeft <= 1 && m_bFire1SecRemain ) { m_bFire1SecRemain = false; m_bFire0SecRemain = true; pLocalPlayer->EmitSound( "Announcer.RoundBegins1Seconds" ); } }
bool CHudArenaCapPointCountdown::ShouldDraw( void ) { return CHudElement::ShouldDraw(); }
|