//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Defines the interface that the GameUI dll exports // // $NoKeywords: $ //=============================================================================// #ifndef GAMEUI_INTERFACE_H #define GAMEUI_INTERFACE_H #pragma once #include "GameUI/IGameUI.h" #include #include class IGameClientExports; //----------------------------------------------------------------------------- // Purpose: Implementation of GameUI's exposed interface //----------------------------------------------------------------------------- class CGameUI : public IGameUI { public: CGameUI(); ~CGameUI(); virtual void Initialize( CreateInterfaceFn appFactory ); virtual void Connect( CreateInterfaceFn gameFactory ); virtual void Start(); virtual void Shutdown(); virtual void RunFrame(); virtual void PostInit(); // plays the startup mp3 when GameUI starts void PlayGameStartupSound(); // Engine wrappers for activating / hiding the gameUI void ActivateGameUI(); void HideGameUI(); // Toggle allowing the engine to hide the game UI with the escape key void PreventEngineHideGameUI(); void AllowEngineHideGameUI(); virtual void SetLoadingBackgroundDialog( vgui::VPANEL panel ); // Bonus maps interfaces virtual void BonusMapUnlock( const char *pchFileName = NULL, const char *pchMapName = NULL ); virtual void BonusMapComplete( const char *pchFileName = NULL, const char *pchMapName = NULL ); virtual void BonusMapChallengeUpdate( const char *pchFileName, const char *pchMapName, const char *pchChallengeName, int iBest ); virtual void BonusMapChallengeNames( char *pchFileName, char *pchMapName, char *pchChallengeName ); virtual void BonusMapChallengeObjectives( int &iBronze, int &iSilver, int &iGold ); virtual void BonusMapDatabaseSave( void ); virtual int BonusMapNumAdvancedCompleted( void ); virtual void BonusMapNumMedals( int piNumMedals[ 3 ] ); // notifications virtual void OnGameUIActivated(); virtual void OnGameUIHidden(); virtual void OLD_OnConnectToServer( const char *game, int IP, int port ); // OLD: use OnConnectToServer2 virtual void OnConnectToServer2( const char *game, int IP, int connectionPort, int queryPort ); virtual void OnDisconnectFromServer( uint8 eSteamLoginFailure ); virtual void OnLevelLoadingStarted( bool bShowProgressDialog ); virtual void OnLevelLoadingFinished( bool bError, const char *failureReason, const char *extendedReason ); virtual void OnDisconnectFromServer_OLD( uint8 eSteamLoginFailure, const char *username ) { OnDisconnectFromServer( eSteamLoginFailure ); } // progress virtual bool UpdateProgressBar(float progress, const char *statusText); // Shows progress desc, returns previous setting... (used with custom progress bars ) virtual bool SetShowProgressText( bool show ); // brings up the new game dialog virtual void ShowNewGameDialog( int chapter ); // Xbox 360 virtual void SessionNotification( const int notification, const int param = 0 ); virtual void SystemNotification( const int notification ); virtual void ShowMessageDialog( const uint nType, vgui::Panel *pOwner = NULL ); virtual void CloseMessageDialog( const uint nType = 0 ); virtual void UpdatePlayerInfo( uint64 nPlayerId, const char *pName, int nTeam, byte cVoiceState, int nPlayersNeeded, bool bHost ); virtual void SessionSearchResult( int searchIdx, void *pHostData, XSESSION_SEARCHRESULT *pResult, int ping ); virtual void OnCreditsFinished( void ); // X360 Storage device validation: // returns true right away if storage device has been previously selected. // otherwise returns false and will set the variable pointed by pStorageDeviceValidated to 1 // once the storage device is selected by user. virtual bool ValidateStorageDevice( int *pStorageDeviceValidated ); virtual void SetProgressOnStart(); virtual void OnConfirmQuit( void ); virtual bool IsMainMenuVisible( void ); // Client DLL is providing us with a panel that it wants to replace the main menu with virtual void SetMainMenuOverride( vgui::VPANEL panel ); // Client DLL is telling us that a main menu command was issued, probably from its custom main menu panel virtual void SendMainMenuCommand( const char *pszCommand ); // state bool IsInLevel(); bool IsInBackgroundLevel(); bool IsInMultiplayer(); bool IsInReplay(); bool IsConsoleUI(); bool HasSavedThisMenuSession(); void SetSavedThisMenuSession( bool bState ); void ShowLoadingBackgroundDialog(); void HideLoadingBackgroundDialog(); bool HasLoadingBackgroundDialog(); private: void SendConnectedToGameMessage(); virtual void StartProgressBar(); virtual bool ContinueProgressBar(float progressFraction); virtual void StopProgressBar(bool bError, const char *failureReason, const char *extendedReason = NULL); virtual bool SetProgressBarStatusText(const char *statusText); //!! these functions currently not implemented virtual void SetSecondaryProgressBar(float progress /* range [0..1] */); virtual void SetSecondaryProgressBarText(const char *statusText); bool FindPlatformDirectory(char *platformDir, int bufferSize); void GetUpdateVersion( char *pszProd, char *pszVer); void ValidateCDKey(); CreateInterfaceFn m_GameFactory; bool m_bPlayGameStartupSound : 1; bool m_bTryingToLoadFriends : 1; bool m_bActivatedUI : 1; bool m_bIsConsoleUI : 1; bool m_bHasSavedThisMenuSession : 1; bool m_bOpenProgressOnStart : 1; int m_iGameIP; int m_iGameConnectionPort; int m_iGameQueryPort; int m_iFriendsLoadPauseFrames; char m_szPreviousStatusText[128]; char m_szPlatformDir[MAX_PATH]; vgui::DHANDLE m_hCDKeyEntryDialog; }; // Purpose: singleton accessor extern CGameUI &GameUI(); // expose client interface extern IGameClientExports *GameClientExports(); #endif // GAMEUI_INTERFACE_H