Files
Seaside/SpyCustom/sdk/clientmode_shared.h
T
2022-11-12 14:43:02 +03:00

244 lines
8.6 KiB
C++

//========= Copyright 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 "GameEventListener.h"
#include "baseviewport.h"
class CBaseHudChat;
class CBaseHudWeaponSelection;
class CViewSetup;
class C_BaseEntity;
class C_BasePlayer;
namespace vgui
{
class Panel;
}
//=============================================================================
// HPE_BEGIN:
// [tj] Moved this from the .cpp file so derived classes could access it
//=============================================================================
#define ACHIEVEMENT_ANNOUNCEMENT_MIN_TIME 10
//=============================================================================
// HPE_END
//=============================================================================
class CReplayReminderPanel;
#define USERID2PLAYER(i) ToBasePlayer( ClientEntityList().GetEnt( engine->GetPlayerForUserID( i ) ) )
extern IClientMode *GetClientModeNormal(); // must be implemented
// This class implements client mode functionality common to HL2 and TF2.
/*
class ClientModeShared : public IClientMode, public CGameEventListener
{
// 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 bool ShouldBlackoutAroundHUD() OVERRIDE;
virtual HeadtrackMovementMode_t ShouldOverrideHeadtrackControl() OVERRIDE;
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 bool CreateMove( float flInputSampleTime, CUserCmd *cmd );
virtual void Update();
// Input
virtual int KeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding );
virtual int HudElementKeyInput( int down, ButtonCode_t 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; }
virtual int HandleSpectatorKeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding );
virtual void ComputeVguiResConditions( KeyValues *pkvConditions ) OVERRIDE;
//=============================================================================
// HPE_BEGIN:
// [menglish] Save server information shown to the client in a persistent place
//=============================================================================
virtual wchar_t* GetServerName() { return NULL; }
virtual void SetServerName(wchar_t* name) {};
virtual wchar_t* GetMapName() { return NULL; }
virtual void SetMapName(wchar_t* name) {};
//=============================================================================
// HPE_END
//=============================================================================
virtual bool DoPostScreenSpaceEffects( const CViewSetup *pSetup );
virtual void DisplayReplayMessage( const char *pLocalizeName, float flDuration, bool bUrgent,
const char *pSound, bool bDlg );
virtual bool IsInfoPanelAllowed() OVERRIDE { return true; }
virtual void InfoPanelDisplayed() OVERRIDE { }
virtual bool IsHTMLInfoPanelAllowed() OVERRIDE { return true; }
//protected:
void* ptr1;
void* ptr2;
CBaseViewport *m_pViewport;
void DisplayReplayReminder();
//private:
virtual void UpdateReplayMessages();
void ClearReplayMessageList();
#if defined( REPLAY_ENABLED )
float m_flReplayStartRecordTime;
float m_flReplayStopRecordTime;
CReplayReminderPanel *m_pReplayReminderPanel;
#endif
// Message mode handling
// All modes share a common chat interface
CBaseHudChat *m_pChatElement;
vgui::HCursor m_CursorNone;
CBaseHudWeaponSelection *m_pWeaponSelection;
int m_nRootSize[2];
};
*/
class ClientModeShared : public IClientMode, public CGameEventListener
{
// 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 Enable();
virtual void EnableWithRootPanel(vgui::VPANEL pRoot);
virtual void Disable();
virtual void Layout(bool bForce = false);
virtual vgui::Panel* GetViewport();
virtual vgui::Panel* GetPanelFromViewport(const char* pchNamePath);
virtual vgui::AnimationController* GetViewportAnimationController() { return m_pViewport->GetAnimationController(); };
virtual void ProcessInput(bool bActive);
virtual bool ShouldDrawDetailObjects();
virtual bool ShouldDrawEntity(C_BaseEntity* pEnt);
virtual bool ShouldDrawLocalPlayer(C_BasePlayer* pPlayer);
virtual bool ShouldDrawParticles();
virtual bool ShouldDrawFog(void);
virtual void OverrideView(CViewSetup* pSetup);
virtual void OverrideAudioState(AudioState_t* pAudioState) { return; }
virtual int KeyInput(int down, ButtonCode_t keynum, const char* pszCurrentBinding);
virtual void StartMessageMode(int iMessageModeType);
virtual vgui::Panel* GetMessagePanel();
virtual void OverrideMouseInput(float* x, float* y);
virtual bool CreateMove(float flInputSampleTime, CUserCmd* cmd);
virtual void LevelInit(const char* newmap);
virtual void LevelShutdown(void);
virtual bool ShouldDrawViewModel(void);
virtual bool ShouldDrawCrosshair(void);
virtual void AdjustEngineViewport(int& x, int& y, int& width, int& height); //29
// Called before rendering a view.
virtual void PreRender(CViewSetup* pSetup) { return; }; // 30 just returns
// Called after everything is rendered.
virtual void PostRender(void);
virtual void PostRenderVGui(void);
virtual void ActivateInGameVGuiContext(vgui::Panel* pPanel);
virtual void DeactivateInGameVGuiContext(void);
virtual float GetViewModelFOV(void);
virtual bool CanRecordDemo(char* errorMsg, int length) const { return true; }
virtual wchar_t* GetServerName(void);
virtual void SetServerName(char* name);
virtual wchar_t* GetMapName(void);
virtual void SetMapName(char* name); // 40
virtual void OnColorCorrectionWeightsReset(void);
virtual float GetColorCorrectionScale(void) const;
virtual int HudElementKeyInput(int down, ButtonCode_t keynum, const char* pszCurrentBinding);
virtual bool DoPostScreenSpaceEffects(const CViewSetup* pSetup); // 44
public:
// Called every frame.
virtual void Update();
virtual void SetBlurFade(float scale) {};
virtual float GetBlurFade(void) { return 0.0f; };
virtual void ReloadScheme(void);
virtual void ReloadSchemeWithRoot(unsigned int root);
virtual void OverrideRenderBounds(int& a1, int& a2, int& a3, int& a4, int& a5, int& a6); // 50
virtual void FireGameEvent(IGameEvent* gameEvent); // 51
int GetSplitScreenPlayerSlot() const;
public:
void* ptr1;
void* ptr2;
CBaseViewport* m_pViewport;
// Message mode handling
// All modes share a common chat interface
CHudChat* m_pChatElement;
vgui::HCursor m_CursorNone;
CBaseHudWeaponSelection* m_pWeaponSelection;
int m_nRootSize[2];
};
#endif // CLIENTMODE_NORMAL_H