//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $Workfile: $ // $Date: $ // $NoKeywords: $ //=============================================================================// #if !defined( CLIENTMODE_NORMAL_H ) #define CLIENTMODE_NORMAL_H #ifdef _WIN32 #pragma once #endif #include "iclientmode.h" #include #include class CBaseHudChat; class CBaseHudWeaponSelection; class CViewSetup; class C_BaseEntity; class C_BasePlayer; namespace vgui { class Panel; } #define USERID2PLAYER(i) ToBasePlayer( ClientEntityList().GetEnt( engine->GetPlayerForUserID( i ) ) ) extern IClientMode *GetClientModeNormal(); // must be implemented // This class implements client mode functionality class ClientModeShared : public IClientMode, public IGameEventListener2 { // IClientMode overrides. public: DECLARE_CLASS_NOBASE( ClientModeShared ); ClientModeShared(); virtual ~ClientModeShared(); virtual void Init(); virtual void InitViewport(); virtual void VGui_Shutdown(); virtual void Shutdown(); virtual void LevelInit( const char *newmap ); virtual void LevelShutdown( void ); virtual void Enable(); virtual void Disable(); virtual void Layout(); virtual void ReloadScheme( void ); virtual void OverrideView( CViewSetup *pSetup ); virtual bool ShouldDrawDetailObjects( ); virtual bool ShouldDrawEntity(C_BaseEntity *pEnt); virtual bool ShouldDrawLocalPlayer( C_BasePlayer *pPlayer ); virtual bool ShouldDrawViewModel(); virtual bool ShouldDrawParticles( ); virtual bool ShouldDrawCrosshair( void ); virtual void AdjustEngineViewport( int& x, int& y, int& width, int& height ); virtual void PreRender(CViewSetup *pSetup); virtual void PostRender(); virtual void PostRenderVGui(); virtual void ProcessInput(bool bActive); virtual void CreateMove( float flInputSampleTime, CUserCmd *cmd ); virtual void Update(); // Input virtual int KeyInput( int down, int keynum, const char *pszCurrentBinding ); virtual void OverrideMouseInput( float *x, float *y ); virtual void StartMessageMode( int iMessageModeType ); virtual vgui::Panel *GetMessagePanel(); virtual void ActivateInGameVGuiContext( vgui::Panel *pPanel ); virtual void DeactivateInGameVGuiContext(); // The mode can choose to not draw fog virtual bool ShouldDrawFog( void ); virtual float GetViewModelFOV( void ); virtual vgui::Panel* GetViewport() { return m_pViewport; } // Gets at the viewports vgui panel animation controller, if there is one... virtual vgui::AnimationController *GetViewportAnimationController() { return m_pViewport->GetAnimationController(); } virtual void FireGameEvent( IGameEvent *event ); virtual bool CanRecordDemo( char *errorMsg, int length ) const { return true; } protected: CBaseViewport *m_pViewport; private: // Message mode handling // All modes share a common chat interface CBaseHudChat *m_pChatElement; vgui::HCursor m_CursorNone; CBaseHudWeaponSelection *m_pWeaponSelection; int m_nRootSize[2]; }; #endif // CLIENTMODE_NORMAL_H