#ifndef ICLIENTMODE_H #define ICLIENTMODE_H #include "VGUI.h" #include "client_virtualreality.h" class CViewSetup; class C_BaseEntity; class C_BasePlayer; class CUserCmd; namespace vgui { class Panel; class AnimationController; } enum { MM_NONE = 0, MM_SAY, MM_SAY_TEAM, }; abstract_class IClientMode { public: virtual ~IClientMode() {} virtual void InitViewport() = 0; virtual void Init() = 0; virtual void VGui_Shutdown() = 0; virtual void Shutdown() = 0; virtual void Enable() = 0; virtual void Disable() = 0; virtual void Layout() = 0; virtual vgui::Panel* GetViewport() = 0; virtual vgui::AnimationController* GetViewportAnimationController() = 0; virtual void ProcessInput(bool bActive) = 0; virtual bool ShouldDrawDetailObjects() = 0; virtual bool ShouldDrawEntity(C_BaseEntity* pEnt) = 0; virtual bool ShouldDrawLocalPlayer(C_BasePlayer* pPlayer) = 0; virtual bool ShouldDrawParticles() = 0; 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; virtual bool ShouldDrawViewModel(void) = 0; virtual bool ShouldDrawCrosshair(void) = 0; virtual void AdjustEngineViewport(int& x, int& y, int& width, int& height) = 0; virtual void PreRender(CViewSetup* pSetup) = 0; 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; virtual wchar_t* GetServerName() = 0; virtual void SetServerName(wchar_t* name) = 0; virtual wchar_t* GetMapName() = 0; virtual void SetMapName(wchar_t* name) = 0; virtual bool DoPostScreenSpaceEffects(const CViewSetup* pSetup) = 0; virtual void DisplayReplayMessage(const char* pLocalizeName, float flDuration, bool bUrgent, const char* pSound, bool bDlg) = 0; public: virtual void Update() = 0; virtual bool ShouldBlackoutAroundHUD() = 0; virtual HeadtrackMovementMode_t ShouldOverrideHeadtrackControl() = 0; virtual bool IsInfoPanelAllowed() = 0; virtual void InfoPanelDisplayed() = 0; virtual bool IsHTMLInfoPanelAllowed() = 0; }; extern IClientMode* g_pClientMode; #endif