Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= 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( 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; }
bool IsAnyPanelVisibleExceptScores() { return m_pViewport->IsAnyPanelVisibleExceptScores(); } bool IsPanelVisible( const char* panel ) { return m_pViewport->IsPanelVisible( panel ); }
virtual void OnDemoRecordStart( char const* pDemoBaseName ) OVERRIDE {} virtual void OnDemoRecordStop() OVERRIDE {}
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
|