Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

226 lines
7.1 KiB

//========= Copyright 1996-2005, 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 "vgui_controls/Panel.h"
#include "vgui_controls/PHandle.h"
#include "convar.h"
#if defined( INCLUDE_SCALEFORM )
#include "scaleformui/scaleformui.h"
#endif
#include "uicomponents/uicomponent_common.h"
#if defined(_PS3)
#define BACKGROUND_MUSIC_FILENAME "gamestartup.ps3.wav"
#else
#define BACKGROUND_MUSIC_FILENAME "mainmenu.mp3"
#endif
#define MAX_BACKGROUND_MUSIC 3
class IGameClientExports;
class CCommand;
//-----------------------------------------------------------------------------
// 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 );
// 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( const char *levelName, bool bShowProgressDialog );
virtual void OnLevelLoadingFinished( bool bError, const char *failureReason, const char *extendedReason );
virtual void OnDisconnectFromServer_OLD( uint8 eSteamLoginFailure, const char *username ) { OnDisconnectFromServer( eSteamLoginFailure ); }
virtual void StartLoadingScreenForCommand( const char* command );
virtual void StartLoadingScreenForKeyValues( KeyValues* keyValues );
// progress
virtual bool UpdateProgressBar(float progress, const char *statusText, bool showDialog = true );
// Shows progress desc, returns previous setting... (used with custom progress bars )
virtual bool SetShowProgressText( bool show );
virtual bool UpdateSecondaryProgressBar(float progress, const wchar_t *desc );
// Xbox 360
virtual void ShowMessageDialog( const uint nType, vgui::Panel *pOwner = NULL );
virtual void ShowMessageDialog( const char* messageID, const char* titleID );
virtual void CreateCommandMsgBox( const char* pszTitle, const char* pszMessage, bool showOk = true, bool showCancel = false, const char* okCommand = NULL, const char* cancelCommand = NULL, const char* closedCommand = NULL, const char* pszLegend = NULL );
virtual void CreateCommandMsgBoxInSlot( ECommandMsgBoxSlot slot, const char* pszTitle, const char* pszMessage, bool showOk = true, bool showCancel = false, const char* okCommand = NULL, const char* cancelCommand = NULL, const char* closedCommand = NULL, const char* pszLegend = NULL );
// Allows the level loading progress to show map-specific info
virtual void SetProgressLevelName( const char *levelName );
virtual void NeedConnectionProblemWaitScreen();
virtual void ShowPasswordUI( char const *pchCurrentPW );
virtual bool LoadingProgressWantsIsolatedRender( bool bContextValid );
virtual void RestoreTopLevelMenu();
virtual void SetProgressOnStart();
#if defined( _GAMECONSOLE ) && defined( _DEMO )
virtual void OnDemoTimeout();
#endif
// state
bool IsInLevel();
bool IsInBackgroundLevel();
bool IsInMultiplayer();
bool IsConsoleUI();
bool HasSavedThisMenuSession();
void SetSavedThisMenuSession( bool bState );
void ShowLoadingBackgroundDialog();
void HideLoadingBackgroundDialog();
bool HasLoadingBackgroundDialog();
virtual bool IsPlayingFullScreenVideo();
virtual bool IsTransitionEffectEnabled();
void SetBackgroundMusicDesired( bool bPlayMusic );
void SetPreviewBackgroundMusic( const char * pchPreviewMusicPrefix );
void ReleaseBackgroundMusic( void );
void StartBackgroundMusicFade( void );
void PlayQuestAudio( const char * pchAudioFile );
void StopQuestAudio( void );
bool IsQuestAudioPlaying( void );
#ifdef PANORAMA_ENABLE
void ChangeGameUIState(CSGOGameUIState_t nNewState);
CSGOGameUIState_t GetGameUIState();
void RegisterGameUIStateListener(ICSGOGameUIStateListener *pListener);
void UnregisterGameUIStateListener(ICSGOGameUIStateListener *pListener);
#endif // PANORAMA_ENABLE
CUtlVector< IUiComponentGlobalInstanceBase * > & GetUiComponents()
{
return m_arrUiComponents;
}
private:
void SendConnectedToGameMessage();
virtual void StartProgressBar();
virtual bool ContinueProgressBar(float progressFraction, bool showDialog = true );
virtual void StopProgressBar(bool bError, const char *failureReason, const char *extendedReason = NULL);
virtual bool SetProgressBarStatusText(const char *statusText, bool showDialog = true );
//!! these functions currently not implemented
virtual void SetSecondaryProgressBar(float progress /* range [0..1] */);
virtual void SetSecondaryProgressBarText( const wchar_t *desc );
bool FindPlatformDirectory(char *platformDir, int bufferSize);
void GetUpdateVersion( char *pszProd, char *pszVer);
void ValidateCDKey();
bool IsBackgroundMusicPlaying( void );
void UpdateBackgroundMusic( void );
CreateInterfaceFn m_GameFactory;
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;
int m_iPlayGameStartupSound;
char m_szPreviousStatusText[128];
char m_szPlatformDir[MAX_PATH];
vgui::DHANDLE<class CCDKeyEntryDialog> m_hCDKeyEntryDialog;
int m_nBackgroundMusicGUID;
bool m_bBackgroundMusicDesired;
int m_nBackgroundMusicVersion;
float m_flBackgroundMusicStopTime;
const char *m_pMusicExtension;
const char *m_pPreviewMusicExtension;
float m_flMainMenuMusicVolume;
float m_flMasterMusicVolume;
float m_flQuestAudioTimeEnd;
float m_flMasterMusicVolumeSavedForMissionAudio;
float m_flMenuMusicVolumeSavedForMissionAudio;
int m_nQuestAudioGUID;
const char * m_pAudioFile;
#ifdef PANORAMA_ENABLE
CSGOGameUIState_t m_CSGOGameUIState;
CUtlVector< ICSGOGameUIStateListener* > m_GameUIStateListeners;
bool m_bFirstActivationForSession = true;
bool m_bInLevelLoading = false;
#endif
CUtlVector< IUiComponentGlobalInstanceBase * > m_arrUiComponents;
};
// Purpose: singleton accessor
extern CGameUI &GameUI();
// expose client interface
extern IGameClientExports *GameClientExports();
#if defined(INCLUDE_SCALEFORM)
extern IScaleformUI* ScaleformUI();
#endif
#endif // GAMEUI_INTERFACE_H