Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

166 lines
5.0 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================
#ifndef TF_HUD_TOURNAMENT_H
#define TF_HUD_TOURNAMENT_H
#ifdef _WIN32
#pragma once
#endif
#include "tf_clientscoreboard.h"
#include "tf_playerpanel.h"
#include "basemodelpanel.h"
class CTFHudTimeStatus;
class CHudTournament : public CHudElement, public EditablePanel
{
DECLARE_CLASS_SIMPLE( CHudTournament, EditablePanel );
public:
CHudTournament( const char *pElementName );
~CHudTournament();
virtual void Init( void );
virtual void OnTick( void );
virtual void LevelInit( void );
virtual void ApplySettings( KeyValues *inResourceData );
virtual void ApplySchemeSettings( IScheme *scheme );
virtual void SetVisible( bool state );
virtual void PerformLayout( void );
virtual void FireGameEvent( IGameEvent * event );
void PreparePanel( void );
void PlaySounds( int nTime );
virtual bool ShouldDraw( void ) { return m_bShouldBeVisible; }
private:
void RecalculatePlayerPanels( void );
void UpdatePlayerPanels( void );
void SetPlayerPanelsVisible( bool bVisible );
CTFPlayerPanel *GetOrAddPanel( int iPanelIndex );
void InitPlayerList( SectionedListPanel *pPlayerList, int nTeam );
static bool TFPlayerSortFunc( vgui::SectionedListPanel *list, int itemID1, int itemID2 );
void UpdatePlayerList();
void UpdatePlayerAvatar( int playerIndex, KeyValues *kv );
void UpdateTeamInfo();
private:
Label *m_pTournamentLabel;
Label *m_pReasonLabel;
bool m_bShouldBeVisible;
float m_flNextUpdate;
bool m_bTeamReady[MAX_TEAMS];
bool m_bReadyStatusMode;
bool m_bCompetitiveMode;
bool m_bReadyTextBlinking;
bool m_bCountDownVisible;
CUtlVector<CTFPlayerPanel*> m_PlayerPanels;
KeyValues *m_pPlayerPanelKVs;
bool m_bReapplyPlayerPanelKVs;
vgui::DHANDLE< CTFClientScoreBoardDialog > m_pScoreboard;
vgui::ScalableImagePanel *m_pCountdownBG;
CExLabel *m_pCountdownLabel;
CExLabel *m_pCountdownLabelShadow;
vgui::ImagePanel *m_pModeImage;
vgui::ScalableImagePanel *m_pHudTournamentBG;
CExLabel *m_pTournamentConditionLabel;
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" );
CPanelAnimationVarAliasType( int, m_iTeamsPlayerDeltaXComp, "teams_player_delta_x_comp", "0", "proportional_int" );
};
class CHudTournamentSetup : public CHudElement, public EditablePanel
{
DECLARE_CLASS_SIMPLE( CHudTournamentSetup, EditablePanel );
public:
CHudTournamentSetup( const char *pElementName );
virtual void Init( void );
virtual void OnTick( void );
virtual void LevelInit( void );
virtual void ApplySchemeSettings( IScheme *scheme );
virtual bool ShouldDraw( void );
virtual void FireGameEvent( IGameEvent * event );
void EnableInput( void );
void DisableInput( void );
bool ToggleState( ButtonCode_t code );
virtual void OnCommand( const char *command );
virtual void OnKeyCodeTyped(vgui::KeyCode code)
{
if ( code == KEY_ESCAPE || code == KEY_F4 || code == KEY_ENTER )
{
ToggleState( code );
}
else
{
BaseClass::OnKeyCodeTyped( code );
}
}
private:
TextEntry *m_pNameEntry;
CTFImagePanel *m_pEntryBG;
CExButton *m_pReadyButton;
CExButton *m_pNotReadyButton;
vgui::Label *m_pTeamNameLabel;
float m_flNextThink;
};
class CHudStopWatch : public CHudElement, public EditablePanel
{
DECLARE_CLASS_SIMPLE( CHudStopWatch, EditablePanel );
public:
CHudStopWatch( const char *pElementName );
virtual void LevelInit( void );
virtual void ApplySchemeSettings( IScheme *pScheme );
virtual void OnTick( void );
virtual bool ShouldDraw( void );
virtual void FireGameEvent( IGameEvent * event );
private:
CTFHudTimeStatus *m_pTimePanel;
CExLabel *m_pStopWatchLabel;
CExLabel *m_pStopWatchScore;
CExLabel *m_pStopWatchPointsLabel;
ImagePanel *m_pStopWatchImage;
CExLabel *m_pStopWatchDescriptionLabel;
Panel *m_pStopWatchDescriptionBG;
bool m_bShouldBeVisible;
};
#endif // TF_HUD_TOURNAMENT_H