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.
141 lines
4.8 KiB
141 lines
4.8 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================
|
||
|
|
||
|
#ifndef TF_SPECTATORGUI_H
|
||
|
#define TF_SPECTATORGUI_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include <spectatorgui.h>
|
||
|
#include "hudelement.h"
|
||
|
#include "tf_hud_playerstatus.h"
|
||
|
#include "item_model_panel.h"
|
||
|
#include "tf_gamerules.h"
|
||
|
#include <vgui_controls/EditablePanel.h>
|
||
|
|
||
|
extern ConVar cl_use_tournament_specgui;
|
||
|
class CAvatarImagePanel;
|
||
|
class CTFPlayerPanel;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Custom health panel used to show spectator target's health
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CTFSpectatorGUIHealth : public CTFHudPlayerHealth
|
||
|
{
|
||
|
public:
|
||
|
CTFSpectatorGUIHealth( Panel *parent, const char *name ) : CTFHudPlayerHealth( parent, name )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
virtual const char *GetResFilename( void )
|
||
|
{
|
||
|
return "resource/UI/SpectatorGUIHealth.res";
|
||
|
}
|
||
|
virtual void OnThink()
|
||
|
{
|
||
|
// Do nothing. We're just preventing the base health panel from updating.
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: TF Spectator UI
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CTFSpectatorGUI : public CSpectatorGUI, public CGameEventListener
|
||
|
{
|
||
|
private:
|
||
|
DECLARE_CLASS_SIMPLE( CTFSpectatorGUI, CSpectatorGUI );
|
||
|
|
||
|
public:
|
||
|
CTFSpectatorGUI( IViewPort *pViewPort );
|
||
|
~CTFSpectatorGUI( void );
|
||
|
|
||
|
virtual void Reset( void );
|
||
|
virtual void PerformLayout( void );
|
||
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||
|
virtual void ApplySettings( KeyValues *inResourceData );
|
||
|
|
||
|
virtual void Update( void );
|
||
|
virtual bool NeedsUpdate( void );
|
||
|
virtual bool ShouldShowPlayerLabel( int specmode ) { return false; }
|
||
|
void UpdateReinforcements( void );
|
||
|
virtual void ShowPanel(bool bShow);
|
||
|
virtual Color GetBlackBarColor( void ) { return Color(52,48,45, 255); }
|
||
|
|
||
|
void UpdateKeyLabels( void );
|
||
|
|
||
|
virtual void FireGameEvent( IGameEvent *event );
|
||
|
void UpdateItemPanel( bool bForce = false );
|
||
|
void ForceItemPanelCycle( void );
|
||
|
virtual const char *GetResFile( void );
|
||
|
|
||
|
// Tournament mode handling
|
||
|
bool InTournamentGUI( void );
|
||
|
void RecalculatePlayerPanels( void );
|
||
|
void UpdatePlayerPanels( void );
|
||
|
void SelectSpec( int iSlot );
|
||
|
|
||
|
virtual int GetTopBarHeight();
|
||
|
|
||
|
virtual GameActionSet_t GetPreferredActionSet() { return GAME_ACTION_SET_SPECTATOR; }
|
||
|
|
||
|
protected:
|
||
|
int m_nLastSpecMode;
|
||
|
float m_flNextTipChangeTime; // time at which to next change the tip
|
||
|
int m_iTipClass; // class that current tip is for
|
||
|
|
||
|
// used to store the x and y position of the Engy and Spy build panels so we can reset them when the spec panel goes away
|
||
|
int m_nEngBuilds_xpos;
|
||
|
int m_nEngBuilds_ypos;
|
||
|
int m_nSpyBuilds_xpos;
|
||
|
int m_nSpyBuilds_ypos;
|
||
|
|
||
|
int m_nMannVsMachineStatus_xpos;
|
||
|
int m_nMannVsMachineStatus_ypos;
|
||
|
|
||
|
vgui::Label *m_pReinforcementsLabel;
|
||
|
CExLabel *m_pBuyBackLabel;
|
||
|
vgui::Label *m_pClassOrTeamLabel;
|
||
|
CExLabel *m_pClassOrTeamKeyLabel;
|
||
|
vgui::Label *m_pSwitchCamModeKeyLabel;
|
||
|
vgui::Label *m_pCycleTargetFwdKeyLabel;
|
||
|
vgui::Label *m_pCycleTargetRevKeyLabel;
|
||
|
vgui::Label *m_pMapLabel;
|
||
|
CItemModelPanel *m_pItemPanel;
|
||
|
|
||
|
float m_flNextItemPanelUpdate;
|
||
|
EHANDLE m_hPrevItemPlayer;
|
||
|
int m_iPrevItemShown;
|
||
|
int m_iFirstItemShown;
|
||
|
bool m_bShownItems;
|
||
|
|
||
|
// Tournament mode player panel handling
|
||
|
CUtlVector<CTFPlayerPanel*> m_PlayerPanels;
|
||
|
KeyValues *m_pPlayerPanelKVs;
|
||
|
bool m_bReapplyPlayerPanelKVs;
|
||
|
bool m_bPrevTournamentMode;
|
||
|
float m_flNextPlayerPanelUpdate;
|
||
|
|
||
|
// Coaching
|
||
|
bool m_bCoaching;
|
||
|
CAvatarImagePanel *m_pAvatar;
|
||
|
CTFSpectatorGUIHealth *m_pStudentHealth;
|
||
|
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam1PlayerBaseOffsetX, "team1_player_base_offset_x", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam1PlayerBaseX, "team1_player_base_x", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam1PlayerBaseY, "team1_player_base_y", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam2PlayerBaseX, "team2_player_base_x", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam2PlayerBaseOffsetX, "team2_player_base_offset_x", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam2PlayerBaseY, "team2_player_base_y", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam1PlayerDeltaX, "team1_player_delta_x", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam1PlayerDeltaY, "team1_player_delta_y", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam2PlayerDeltaX, "team2_player_delta_x", "0", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iTeam2PlayerDeltaY, "team2_player_delta_y", "0", "proportional_int" );
|
||
|
};
|
||
|
|
||
|
#endif // TF_SPECTATORGUI_H
|