Permalink
Switch branches/tags
Nothing to show
Find file Copy path
156 lines (114 sloc) 4.55 KB
//========= 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