//========= 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