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.
155 lines
4.6 KiB
155 lines
4.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Revision: $ |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef ICLIENTMODE_H |
|
#define ICLIENTMODE_H |
|
|
|
#include <vgui/VGUI.h> |
|
#include "client_virtualreality.h" |
|
|
|
class CViewSetup; |
|
class C_BaseEntity; |
|
class C_BasePlayer; |
|
class CUserCmd; |
|
|
|
namespace vgui |
|
{ |
|
class Panel; |
|
class AnimationController; |
|
} |
|
|
|
// Message mode types |
|
enum |
|
{ |
|
MM_NONE = 0, |
|
MM_SAY, |
|
MM_SAY_TEAM, |
|
}; |
|
|
|
abstract_class IClientMode |
|
{ |
|
// Misc. |
|
public: |
|
|
|
virtual ~IClientMode() {} |
|
|
|
// Called before the HUD is initialized. |
|
virtual void InitViewport()=0; |
|
|
|
// One time init when .dll is first loaded. |
|
virtual void Init()=0; |
|
|
|
// Called when vgui is shutting down. |
|
virtual void VGui_Shutdown() = 0; |
|
|
|
// One time call when dll is shutting down |
|
virtual void Shutdown()=0; |
|
|
|
// Called when switching from one IClientMode to another. |
|
// This can re-layout the view and such. |
|
// Note that Enable and Disable are called when the DLL initializes and shuts down. |
|
virtual void Enable()=0; |
|
|
|
// Called when it's about to go into another client mode. |
|
virtual void Disable()=0; |
|
|
|
// Called when initializing or when the view changes. |
|
// This should move the viewport into the correct position. |
|
virtual void Layout()=0; |
|
|
|
// Gets at the viewport, if there is one... |
|
virtual vgui::Panel *GetViewport() = 0; |
|
|
|
// Gets at the viewports vgui panel animation controller, if there is one... |
|
virtual vgui::AnimationController *GetViewportAnimationController() = 0; |
|
|
|
// called every time shared client dll/engine data gets changed, |
|
// and gives the cdll a chance to modify the data. |
|
virtual void ProcessInput( bool bActive ) = 0; |
|
|
|
// The mode can choose to draw/not draw entities. |
|
virtual bool ShouldDrawDetailObjects( ) = 0; |
|
virtual bool ShouldDrawEntity(C_BaseEntity *pEnt) = 0; |
|
virtual bool ShouldDrawLocalPlayer( C_BasePlayer *pPlayer ) = 0; |
|
virtual bool ShouldDrawParticles( ) = 0; |
|
|
|
// The mode can choose to not draw fog |
|
virtual bool ShouldDrawFog( void ) = 0; |
|
|
|
virtual void OverrideView( CViewSetup *pSetup ) = 0; |
|
virtual int KeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding ) = 0; |
|
virtual void StartMessageMode( int iMessageModeType ) = 0; |
|
virtual vgui::Panel *GetMessagePanel() = 0; |
|
virtual void OverrideMouseInput( float *x, float *y ) = 0; |
|
virtual bool CreateMove( float flInputSampleTime, CUserCmd *cmd ) = 0; |
|
|
|
virtual void LevelInit( const char *newmap ) = 0; |
|
virtual void LevelShutdown( void ) = 0; |
|
|
|
// Certain modes hide the view model |
|
virtual bool ShouldDrawViewModel( void ) = 0; |
|
virtual bool ShouldDrawCrosshair( void ) = 0; |
|
|
|
// Let mode override viewport for engine |
|
virtual void AdjustEngineViewport( int& x, int& y, int& width, int& height ) = 0; |
|
|
|
// Called before rendering a view. |
|
virtual void PreRender( CViewSetup *pSetup ) = 0; |
|
|
|
// Called after everything is rendered. |
|
virtual void PostRender( void ) = 0; |
|
|
|
virtual void PostRenderVGui() = 0; |
|
|
|
virtual void ActivateInGameVGuiContext( vgui::Panel *pPanel ) = 0; |
|
virtual void DeactivateInGameVGuiContext() = 0; |
|
virtual float GetViewModelFOV( void ) = 0; |
|
|
|
virtual bool CanRecordDemo( char *errorMsg, int length ) const = 0; |
|
|
|
virtual void ComputeVguiResConditions( KeyValues *pkvConditions ) = 0; |
|
|
|
//============================================================================= |
|
// HPE_BEGIN: |
|
// [menglish] Save server information shown to the client in a persistent place |
|
//============================================================================= |
|
|
|
virtual wchar_t* GetServerName() = 0; |
|
virtual void SetServerName(wchar_t* name) = 0; |
|
virtual wchar_t* GetMapName() = 0; |
|
virtual void SetMapName(wchar_t* name) = 0; |
|
|
|
//============================================================================= |
|
// HPE_END |
|
//============================================================================= |
|
|
|
virtual bool DoPostScreenSpaceEffects( const CViewSetup *pSetup ) = 0; |
|
|
|
virtual void DisplayReplayMessage( const char *pLocalizeName, float flDuration, bool bUrgent, |
|
const char *pSound, bool bDlg ) = 0; |
|
|
|
// Updates. |
|
public: |
|
|
|
// Called every frame. |
|
virtual void Update()=0; |
|
|
|
// Returns true if VR mode should black out everything around the UI |
|
virtual bool ShouldBlackoutAroundHUD() = 0; |
|
|
|
// Returns true if VR mode should black out everything around the UI |
|
virtual HeadtrackMovementMode_t ShouldOverrideHeadtrackControl() = 0; |
|
|
|
virtual bool IsInfoPanelAllowed() = 0; |
|
virtual void InfoPanelDisplayed() = 0; |
|
virtual bool IsHTMLInfoPanelAllowed() = 0; |
|
}; |
|
|
|
extern IClientMode *g_pClientMode; |
|
|
|
#endif
|
|
|