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.
174 lines
4.4 KiB
174 lines
4.4 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: Normal HUD mode
|
||
|
//
|
||
|
// $Workfile: $
|
||
|
// $Date: $
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
#include "cbase.h"
|
||
|
#include "hud_chat.h"
|
||
|
#include "clientmode_tfnormal.h"
|
||
|
#include "clientmode.h"
|
||
|
#include "hud.h"
|
||
|
#include "iinput.h"
|
||
|
#include "c_basetfplayer.h"
|
||
|
#include "hud_timer.h"
|
||
|
#include "usercmd.h"
|
||
|
#include "in_buttons.h"
|
||
|
#include "c_tf_playerclass.h"
|
||
|
#include "engine/IEngineSound.h"
|
||
|
#include <vgui/IInput.h>
|
||
|
#include <vgui/IPanel.h>
|
||
|
#include <vgui_controls/AnimationController.h>
|
||
|
|
||
|
// memdbgon must be the last include file in a .cpp file!!!
|
||
|
#include "tier0/memdbgon.h"
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Instance the singleton and expose the interface to it.
|
||
|
// Output : IClientMode
|
||
|
//-----------------------------------------------------------------------------
|
||
|
IClientMode *GetClientModeNormal( void )
|
||
|
{
|
||
|
static ClientModeTFNormal g_ClientModeNormal;
|
||
|
return &g_ClientModeNormal;
|
||
|
}
|
||
|
|
||
|
ClientModeTFNormal::ClientModeTFNormal()
|
||
|
{
|
||
|
m_pViewport = new Viewport();
|
||
|
m_pViewport->Start( gameuifuncs, gameeventmanager );
|
||
|
}
|
||
|
|
||
|
ClientModeTFNormal::Viewport::Viewport()
|
||
|
{
|
||
|
// use a custom scheme for the hud
|
||
|
m_bHumanScheme = true;
|
||
|
vgui::HScheme scheme = vgui::scheme()->LoadSchemeFromFileEx( enginevgui->GetPanel( PANEL_CLIENTDLL ), "resource/ClientSchemeHuman.res", "HudScheme");
|
||
|
SetScheme(scheme);
|
||
|
}
|
||
|
|
||
|
void ClientModeTFNormal::Viewport::OnThink()
|
||
|
{
|
||
|
BaseClass::OnThink();
|
||
|
|
||
|
// See if scheme should change
|
||
|
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
||
|
if(!pPlayer)
|
||
|
return;
|
||
|
int team = pPlayer->GetTeamNumber();
|
||
|
if ( !team )
|
||
|
return;
|
||
|
|
||
|
bool human = ( team == TEAM_HUMANS ) ? true : false;
|
||
|
if ( human != m_bHumanScheme )
|
||
|
{
|
||
|
ReloadScheme();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void ClientModeTFNormal::Viewport::ReloadScheme()
|
||
|
{
|
||
|
// See if scheme should change
|
||
|
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
||
|
|
||
|
if(!pPlayer)
|
||
|
return;
|
||
|
|
||
|
const char *schemeFile = NULL;
|
||
|
|
||
|
int team = pPlayer->GetTeamNumber();
|
||
|
if ( team )
|
||
|
{
|
||
|
m_bHumanScheme = ( team == TEAM_HUMANS ) ? true : false;
|
||
|
|
||
|
if ( m_bHumanScheme )
|
||
|
{
|
||
|
schemeFile = "resource/ClientSchemeHuman.res";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
schemeFile = "resource/ClientSchemeAlien.res";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// BaseClass::ReloadScheme( schemeFile );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Output : vgui::Panel
|
||
|
//-----------------------------------------------------------------------------
|
||
|
vgui::Panel *ClientModeTFNormal::GetMinimapParent( void )
|
||
|
{
|
||
|
return GetViewport();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void ClientModeTFNormal::Update()
|
||
|
{
|
||
|
BaseClass::Update();
|
||
|
HudCommanderOverlayMgr()->Tick( );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Input : frametime -
|
||
|
// *cmd -
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void ClientModeTFNormal::CreateMove( float flInputSampleTime, CUserCmd *cmd )
|
||
|
{
|
||
|
// Let the player override the view.
|
||
|
C_BaseTFPlayer *pPlayer = C_BaseTFPlayer::GetLocalPlayer();
|
||
|
if(!pPlayer)
|
||
|
return;
|
||
|
|
||
|
// Let the player at it
|
||
|
pPlayer->CreateMove( flInputSampleTime, cmd );
|
||
|
|
||
|
// Handle knockdowns
|
||
|
if ( pPlayer->CheckKnockdownAngleOverride() )
|
||
|
{
|
||
|
QAngle ang;
|
||
|
pPlayer->GetKnockdownAngles( ang );
|
||
|
|
||
|
cmd->viewangles = ang;
|
||
|
engine->SetViewAngles( ang );
|
||
|
|
||
|
cmd->forwardmove = cmd->sidemove = cmd->upmove = 0;
|
||
|
// Only keep score if it's down
|
||
|
cmd->buttons &= ( IN_SCORE );
|
||
|
}
|
||
|
|
||
|
if ( pPlayer->GetPlayerClass() )
|
||
|
{
|
||
|
C_PlayerClass *pPlayerClass = pPlayer->GetPlayerClass();
|
||
|
pPlayerClass->CreateMove( flInputSampleTime, cmd );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Output : Returns true on success, false on failure.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool ClientModeTFNormal::ShouldDrawViewModel( void )
|
||
|
{
|
||
|
C_BaseTFPlayer *pPlayer = C_BaseTFPlayer::GetLocalPlayer();
|
||
|
if(!pPlayer)
|
||
|
return false;
|
||
|
|
||
|
return pPlayer->ShouldDrawViewModel();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|