diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/iclientmode.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/iclientmode.h')
| -rw-r--r-- | game/client/iclientmode.h | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/game/client/iclientmode.h b/game/client/iclientmode.h new file mode 100644 index 0000000..60eb35e --- /dev/null +++ b/game/client/iclientmode.h @@ -0,0 +1,158 @@ +//========= 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; + + virtual void OnDemoRecordStart( char const* pDemoBaseName ) = 0; + virtual void OnDemoRecordStop() = 0; +}; + +extern IClientMode *g_pClientMode; + +#endif |