diff options
Diffstat (limited to 'game/client/tf/vgui/tf_lobbypanel_comp.h')
| -rw-r--r-- | game/client/tf/vgui/tf_lobbypanel_comp.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/game/client/tf/vgui/tf_lobbypanel_comp.h b/game/client/tf/vgui/tf_lobbypanel_comp.h new file mode 100644 index 0000000..1e0d843 --- /dev/null +++ b/game/client/tf/vgui/tf_lobbypanel_comp.h @@ -0,0 +1,139 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// +#ifndef TF_LOBBYPANEL_COMP_H +#define TF_LOBBYPANEL_COMP_H + +#include "cbase.h" +#include "game/client/iviewport.h" +#include "tf_lobbypanel.h" +#include "tf_leaderboardpanel.h" +#include "local_steam_shared_object_listener.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include <tier0/memdbgon.h> + +using namespace GCSDK; + +class CBaseLobbyPanel; + +namespace vgui +{ + class ScrollableEditablePanel; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CLadderLobbyLeaderboard : public CTFLeaderboardPanel +{ + DECLARE_CLASS_SIMPLE( CLadderLobbyLeaderboard, CTFLeaderboardPanel ); +public: + + CLadderLobbyLeaderboard( Panel *pParent, const char *pszPanelName ); + + //----------------------------------------------------------------------------- + // Purpose: Create leaderboard panels + //----------------------------------------------------------------------------- + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; + virtual void PerformLayout() OVERRIDE; + virtual void OnCommand( const char *command ) OVERRIDE; + + virtual bool GetLeaderboardData( CUtlVector< LeaderboardEntry_t* >& scores ); + virtual bool UpdateLeaderboards(); + + void SetLeaderboard( const char *pszLeaderboardName, bool bGlobal ); + + const char *GetLeaderboardName() const { return m_pszLeaderboardName; } + bool IsDataValid( void ) { return m_bIsDataValid; } + +private: + const char *m_pszLeaderboardName; + bool m_bGlobal; + bool m_bIsDataValid; + + vgui::ScrollableEditablePanel *m_pScoreListScroller; + EditablePanel *m_pScoreList; + + CTFTextToolTip *m_pToolTip; + vgui::EditablePanel *m_pToolTipEmbeddedPanel; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CLobbyPanel_Comp : public CBaseLobbyPanel, public CLocalSteamSharedObjectListener +{ + DECLARE_CLASS_SIMPLE( CLobbyPanel_Comp, CBaseLobbyPanel ); + +public: + CLobbyPanel_Comp( vgui::Panel *pParent, CBaseLobbyContainerFrame* pLobbyContainer ); + virtual ~CLobbyPanel_Comp(); + + // + // Panel overrides + // + virtual void PerformLayout() OVERRIDE; + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; + virtual void OnCommand( const char *command ) OVERRIDE; + + virtual EMatchGroup GetMatchGroup( void ) const OVERRIDE; + + virtual void SOCreated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE; + virtual void SOUpdated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE; + + virtual void OnThink() OVERRIDE; + + // + // CGameEventListener overrides + // + virtual void FireGameEvent( IGameEvent *event ) OVERRIDE; + +private: + virtual bool ShouldShowLateJoin() const OVERRIDE; + virtual void ApplyChatUserSettings( const LobbyPlayerInfo &player,KeyValues *pKV ) const OVERRIDE; + virtual const char* GetResFile() const OVERRIDE { return "Resource/UI/LobbyPanel_Comp.res"; } + + CPanelAnimationVarAliasType( int, m_iStatMedalWidth, "stat_medal_width", "14", "proportional_int" ); + CPanelAnimationVarAliasType( int, m_iMedalCountWidth, "stat_medal_count_width", "20", "proportional_int" ); + CPanelAnimationVarAliasType( int, m_iHasPassWidth, "has_pass_width", "12", "proportional_int" ); + + CUtlVector<vgui::Label *> m_vecSearchCriteriaLabels; + + // leaderboards + CLadderLobbyLeaderboard *m_pCompetitiveModeLeaderboard; + + vgui::HFont m_fontMedalsCount; + + enum EMatchHistorySortMethods_t + { + SORT_BY_RESULT = 0, + SORT_BY_DATE, + SORT_BY_MAP, + SORT_BY_KDR, + + NUM_SORT_METHODS + }; + + CScrollableList* m_pMatchHistoryScroller; + EMatchHistorySortMethods_t m_eMatchSortMethod; + bool m_bDescendingMatchHistorySort; + + float m_flCompetitiveRankProgress; + float m_flCompetitiveRankPrevProgress; + float m_flRefreshPlayerListTime; + bool m_bCompetitiveRankChangePlayedSound; + bool m_bMatchHistoryLoaded; + + void WriteGameSettingsControls() OVERRIDE; + + int GetMedalCountForStat( EMatchGroup unLadderType, RankStatType_t nStatType, int nMedalLevel ); + + + void UpdateMatchDataForLocalPlayer(); + bool m_bMatchDataForLocalPlayerDirty; +}; + +#endif //TF_LOBBYPANEL_COMP_H |