This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/client/clientmode_shared.h
2020-08-04 13:13:01 -04:00

169 lines
5.5 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 <baseviewport.h>
#include "GameEventListener.h"
#include "iclientmode.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(bool flushLowLevel);
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:
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];
};
#endif // CLIENTMODE_NORMAL_H