summaryrefslogtreecommitdiff
path: root/game/client/dod/c_dod_player.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/dod/c_dod_player.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/client/dod/c_dod_player.h')
-rw-r--r--game/client/dod/c_dod_player.h284
1 files changed, 284 insertions, 0 deletions
diff --git a/game/client/dod/c_dod_player.h b/game/client/dod/c_dod_player.h
new file mode 100644
index 0000000..3136b71
--- /dev/null
+++ b/game/client/dod/c_dod_player.h
@@ -0,0 +1,284 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef C_DOD_PLAYER_H
+#define C_DOD_PLAYER_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+#include "dod_playeranimstate.h"
+#include "c_baseplayer.h"
+#include "dod_shareddefs.h"
+#include "baseparticleentity.h"
+#include "dod_player_shared.h"
+#include "beamdraw.h"
+#include "hintsystem.h"
+
+#define PRONE_MAX_SWAY 3.0
+#define PRONE_SWAY_AMOUNT 4.0
+#define RECOIL_DURATION 0.1
+
+class CViewAngleAnimation;
+
+class C_DODPlayer : public C_BasePlayer
+{
+public:
+ friend class CDODPlayerShared;
+
+ DECLARE_CLASS( C_DODPlayer, C_BasePlayer );
+ DECLARE_CLIENTCLASS();
+ DECLARE_PREDICTABLE();
+ DECLARE_INTERPOLATION();
+
+ C_DODPlayer();
+ ~C_DODPlayer();
+
+ static C_DODPlayer* GetLocalDODPlayer();
+
+ virtual const QAngle& GetRenderAngles();
+ virtual void UpdateClientSideAnimation();
+ virtual void ProcessMuzzleFlashEvent();
+ virtual void PostDataUpdate( DataUpdateType_t updateType );
+
+ virtual bool CreateMove( float flInputSampleTime, CUserCmd *pCmd );
+
+ virtual void FireEvent( const Vector& origin, const QAngle& angles, int event, const char *options );
+
+ virtual void OnDataChanged( DataUpdateType_t type );
+ virtual void NotifyShouldTransmit( ShouldTransmitState_t state );
+ virtual void ClientThink( void );
+ virtual void GetToolRecordingState( KeyValues *msg );
+
+ void LocalPlayerRespawn( void );
+
+ // Returns true if we're allowed to show the menus right now.
+ bool CanShowTeamMenu() const { return true; }
+
+ bool CanShowClassMenu();
+
+ bool ShouldDraw( void );
+
+ virtual C_BaseAnimating * BecomeRagdollOnClient();
+ virtual IRagdoll* GetRepresentativeRagdoll() const;
+
+ virtual void ReceiveMessage( int classID, bf_read &msg );
+ void PopHelmet( Vector vecDir, Vector vecForceOffset, int model );
+
+ // Get the ID target entity index. The ID target is the player that is behind our crosshairs, used to
+ // display the player's name.
+ int GetIDTarget() const
+ {
+ return m_iIDEntIndex;
+ }
+
+ void UpdateIDTarget();
+
+ bool ShouldAutoReload( void );
+ bool ShouldAutoRezoom( void );
+
+ void SetSprinting( bool bIsSprinting );
+ bool IsSprinting( void );
+
+ void LowerWeapon( void );
+ void RaiseWeapon( void );
+ bool IsWeaponLowered( void );
+
+ virtual ShadowType_t ShadowCastType( void );
+ virtual void GetRenderBounds( Vector& theMins, Vector& theMaxs );
+ virtual void GetShadowRenderBounds( Vector &mins, Vector &maxs, ShadowType_t shadowType );
+ virtual bool GetShadowCastDirection( Vector *pDirection, ShadowType_t shadowType ) const;
+
+ virtual int DrawModel( int flags );
+ virtual void Simulate();
+
+ virtual float GetMinFOV() const { return 20; }
+ virtual bool SetFOV( CBaseEntity *pRequester, int FOV, float zoomRate = 0.0f );
+
+ virtual void CreateLightEffects( void ) {} //no dimlight effects
+
+ virtual Vector GetChaseCamViewOffset( CBaseEntity *target );
+ virtual const QAngle& EyeAngles();
+ virtual const Vector& GetRenderOrigin(); // return ragdoll origin if dead
+
+ bool dod_IsInterpolationEnabled( void ) { return IsInterpolationEnabled(); }
+
+ void CreateViewAngleAnimations( void );
+
+ void CheckGrenadeHint( Vector vecGrenadeOrigin );
+ void CheckBombTargetPlantHint( void );
+ void CheckBombTargetDefuseHint( void );
+
+ virtual void ComputeWorldSpaceSurroundingBox( Vector *pVecWorldMins, Vector *pVecWorldMaxs );
+
+ // Hints
+ virtual CHintSystem *Hints( void ) { return &m_Hints; }
+
+ // Player avoidance
+ bool ShouldCollide( int collisionGroup, int contentsMask ) const;
+ void AvoidPlayers( CUserCmd *pCmd );
+
+ virtual bool ShouldReceiveProjectedTextures( int flags )
+ {
+ return ( this != C_BasePlayer::GetLocalPlayer() );
+ }
+
+ bool IsNemesisOfLocalPlayer();
+ bool ShouldShowNemesisIcon();
+
+ virtual void OnAchievementAchieved( int iAchievement );
+
+ int GetActiveAchievementAward( void );
+ IMaterial *GetHeadIconMaterial( void );
+
+protected:
+ virtual void CalcObserverView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov );
+ void CalcDODDeathCamView( Vector &eyeOrigin, QAngle& eyeAngles, float& fov );
+ void CalcChaseCamView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov);
+ virtual void CalcFreezeCamView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov );
+
+
+ // Called by shared code.
+public:
+
+ void DoAnimationEvent( PlayerAnimEvent_t event, int nData = 0 );
+
+ DODPlayerState State_Get() const;
+
+ IDODPlayerAnimState *m_PlayerAnimState;
+
+
+ QAngle m_angEyeAngles;
+ CInterpolatedVar< QAngle > m_iv_angEyeAngles;
+
+ void FireBullets( const FireBulletsInfo_t &info );
+ bool CanAttack( void );
+
+ void SetBazookaDeployed( bool bDeployed ) {}
+
+ // the control point index the player is near
+ int GetCPIndex( void ) { return m_Shared.GetCPIndex(); }
+
+//Implemented in shared code
+public:
+ virtual void SharedSpawn();
+
+ void CheckProneMoveSound( int groundspeed, bool onground );
+ virtual void UpdateStepSound( surfacedata_t *psurface, const Vector &vecOrigin, const Vector &vecVelocity );
+ virtual void PlayStepSound( Vector &vecOrigin, surfacedata_t *psurface, float fvol, bool force );
+
+ virtual const Vector GetPlayerMins( void ) const; // uses local player
+ virtual const Vector GetPlayerMaxs( void ) const; // uses local player
+
+ // Returns true if the player is allowed to move.
+ bool CanMove() const;
+ float GetStamina( void ) const;
+ void SetStamina( float flStamina );
+
+ virtual void SetAnimation( PLAYER_ANIM playerAnim );
+
+ CDODPlayerShared m_Shared;
+
+ float m_flRecoilTimeRemaining;
+ float m_flPitchRecoilAccumulator;
+ float m_flYawRecoilAccumulator;
+
+ void GetWeaponRecoilAmount( int weaponId, float &flPitchRecoil, float &flYawRecoil );
+ void DoRecoil( int iWpnID, float flWpnRecoil );
+ void SetRecoilAmount( float flPitchRecoil, float flYawRecoil );
+ void GetRecoilToAddThisFrame( float &flPitchRecoil, float &flYawRecoil );
+
+ EHANDLE m_hRagdoll;
+
+ CWeaponDODBase* GetActiveDODWeapon() const;
+
+ Activity TranslateActivity( Activity baseAct, bool *pRequired = NULL );
+
+ Vector m_lastStandingPos; // used by the gamemovement code for finding ladders
+
+ // for stun effect
+ float m_flStunEffectTime;
+ float m_flStunAlpha;
+ CNetworkVar( float, m_flStunMaxAlpha );
+ CNetworkVar( float, m_flStunDuration );
+
+ float GetDeathTime( void ) { return m_flDeathTime; }
+
+ // How long the progress bar takes to get to the end. If this is 0, then the progress bar
+ // should not be drawn.
+ CNetworkVar( int, m_iProgressBarDuration );
+
+ // When the progress bar should start.
+ CNetworkVar( float, m_flProgressBarStartTime );
+
+ float m_flLastRespawnTime;
+
+private:
+ C_DODPlayer( const C_DODPlayer & );
+
+ CNetworkVar( DODPlayerState, m_iPlayerState );
+
+ CNetworkVar( float, m_flStamina );
+
+ float m_flProneViewOffset;
+ bool m_bProneSwayingRight;
+ Vector m_vecRagdollVelocity;
+
+ // ID Target
+ int m_iIDEntIndex;
+
+ bool m_bWeaponLowered; // should our weapon be lowered right now
+
+ CNetworkVar( bool, m_bSpawnInterpCounter );
+ bool m_bSpawnInterpCounterCache;
+
+ CHintSystem m_Hints;
+
+ void ReleaseFlashlight( void );
+ Beam_t *m_pFlashlightBeam;
+
+ float m_flMinNextStepSoundTime;
+
+ float m_fNextThinkPushAway;
+
+ bool m_bPlayingProneMoveSound;
+
+ void StaminaSoundThink( void );
+ CSoundPatch *m_pStaminaSound;
+ bool m_bPlayingLowStaminaSound;
+
+ // Cold Breath
+ bool CreateColdBreathEmitter( void );
+ void DestroyColdBreathEmitter( void );
+ void UpdateColdBreath( void );
+ void EmitColdBreathParticles( void );
+
+ bool m_bColdBreathOn;
+ float m_flColdBreathTimeStart;
+ float m_flColdBreathTimeEnd;
+ CSmartPtr<CSimpleEmitter> m_hColdBreathEmitter;
+ PMaterialHandle m_hColdBreathMaterial;
+ int m_iHeadAttach;
+
+ float m_flHideHeadIconUntilTime;
+
+ virtual void CalculateIKLocks( float currentTime );
+
+ int m_iAchievementAwardsMask;
+ IMaterial *m_pHeadIconMaterial;
+};
+
+inline C_DODPlayer *ToDODPlayer( CBaseEntity *pEntity )
+{
+ if ( !pEntity || !pEntity->IsPlayer() )
+ return NULL;
+
+ return dynamic_cast<C_DODPlayer*>( pEntity );
+}
+
+
+#endif // C_DOD_PLAYER_H