diff options
Diffstat (limited to 'gameui/matchmaking/matchmakingbasepanel.h')
| -rw-r--r-- | gameui/matchmaking/matchmakingbasepanel.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/gameui/matchmaking/matchmakingbasepanel.h b/gameui/matchmaking/matchmakingbasepanel.h new file mode 100644 index 0000000..0be40ed --- /dev/null +++ b/gameui/matchmaking/matchmakingbasepanel.h @@ -0,0 +1,114 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Serves as the base panel for the entire matchmaking UI +// +//=============================================================================// + +#ifndef MATCHMAKINGBASEPANEL_H +#define MATCHMAKINGBASEPANEL_H +#ifdef _WIN32 +#pragma once +#endif + +#include "basedialog.h" +#include "utlstack.h" +#include "const.h" + +enum EGameType +{ + GAMETYPE_RANKED_MATCH, + GAMETYPE_STANDARD_MATCH, + GAMETYPE_SYSTEMLINK_MATCH, +}; + +//---------------------------- +// CMatchmakingBasePanel +//---------------------------- +class CMatchmakingBasePanel : public CBaseDialog +{ + DECLARE_CLASS_SIMPLE( CMatchmakingBasePanel, CBaseDialog ); + +public: + CMatchmakingBasePanel(vgui::Panel *parent); + ~CMatchmakingBasePanel(); + + virtual void OnCommand( const char *pCommand ); + virtual void OnKeyCodePressed( vgui::KeyCode code ); + virtual void Activate(); + + void SessionNotification( const int notification, const int param = 0 ); + void SystemNotification( const int notification ); + void UpdatePlayerInfo( uint64 nPlayerId, const char *pName, int nTeam, byte cVoiceState, int nPlayersNeeded, bool bHost ); + void SessionSearchResult( int searchIdx, void *pHostData, XSESSION_SEARCHRESULT *pResult, int ping ); + + void OnLevelLoadingStarted(); + void OnLevelLoadingFinished(); + void CloseGameDialogs( bool bActivateNext = true ); + void CloseAllDialogs( bool bActivateNext = true ); + void CloseBaseDialogs( void ); + + void SetFooterButtons( CBaseDialog *pOwner, KeyValues *pData, int nButtonGap = -1 ); + void ShowFooter( bool bShown ); + void SetFooterButtonVisible( const char *pszText, bool bVisible ); + + uint GetGameType( void ) { return m_nGameType; } + + MESSAGE_FUNC_CHARPTR( LoadMap, "LoadMap", mapname ); +private: + void OnOpenWelcomeDialog(); + void OnOpenPauseDialog(); + void OnOpenRankingsDialog(); + void OnOpenSystemLinkDialog(); + void OnOpenPlayerMatchDialog(); + void OnOpenRankedMatchDialog(); + void OnOpenAchievementsDialog(); + + //============================================================================= + // HPE_BEGIN: + // [dwenger] Specific code for CS Achievements Display + //============================================================================= + + // $TODO(HPE): Move this to a game-specific location + void OnOpenCSAchievementsDialog(); + + //============================================================================= + // HPE_END + //============================================================================= + + void OnOpenLeaderboardDialog( const char *pResourceName ); + void OnOpenSessionOptionsDialog( const char *pResourceName ); + void OnOpenSessionLobbyDialog( const char *pResourceName ); + void OnOpenSessionBrowserDialog( const char *pResourceName ); + + void LoadSessionProperties(); + bool ValidateSigninAndStorage( bool bOnlineRequired, const char *pIssuingCommand ); + void CenterDialog( vgui::PHandle dlg ); + void PushDialog( vgui::DHANDLE< CBaseDialog > &hDialog ); + void PopDialog( bool bActivateNext = true ); + + vgui::DHANDLE< CBaseDialog > m_hWelcomeDialog; + vgui::DHANDLE< CBaseDialog > m_hPauseDialog; + vgui::DHANDLE< CBaseDialog > m_hStatsDialog; + vgui::DHANDLE< CBaseDialog > m_hRankingsDialog; + vgui::DHANDLE< CBaseDialog > m_hLeaderboardDialog; + vgui::DHANDLE< CBaseDialog > m_hSystemLinkDialog; + vgui::DHANDLE< CBaseDialog > m_hPlayerMatchDialog; + vgui::DHANDLE< CBaseDialog > m_hRankedMatchDialog; + vgui::DHANDLE< CBaseDialog > m_hAchievementsDialog; + vgui::DHANDLE< CBaseDialog > m_hSessionOptionsDialog; + vgui::DHANDLE< CBaseDialog > m_hSessionLobbyDialog; + vgui::DHANDLE< CBaseDialog > m_hSessionBrowserDialog; + + CUtlStack< vgui::DHANDLE< CBaseDialog > > m_DialogStack; + + uint m_nSessionType; + uint m_nGameType; + bool m_bPlayingOnline; + char m_szMapLoadName[MAX_MAP_NAME]; + KeyValues *m_pSessionKeys; + + CFooterPanel *m_pFooter; +}; + + +#endif // MATCHMAKINGBASEPANEL_H |