summaryrefslogtreecommitdiff
path: root/game/client/tf/tf_hud_tournament.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/tf/tf_hud_tournament.h')
-rw-r--r--game/client/tf/tf_hud_tournament.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/game/client/tf/tf_hud_tournament.h b/game/client/tf/tf_hud_tournament.h
new file mode 100644
index 0000000..c650f4f
--- /dev/null
+++ b/game/client/tf/tf_hud_tournament.h
@@ -0,0 +1,165 @@
+//========= 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