source-engine/gameui/matchmaking/matchmakingbasepanel.h

115 lines
3.9 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= 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