diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/dod/dod_player_shared.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/shared/dod/dod_player_shared.h')
| -rw-r--r-- | game/shared/dod/dod_player_shared.h | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/game/shared/dod/dod_player_shared.h b/game/shared/dod/dod_player_shared.h new file mode 100644 index 0000000..9d982d3 --- /dev/null +++ b/game/shared/dod/dod_player_shared.h @@ -0,0 +1,285 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef DOD_PLAYER_SHARED_H +#define DOD_PLAYER_SHARED_H +#ifdef _WIN32 +#pragma once +#endif + + +#include "networkvar.h" +#include "weapon_dodbase.h" + + +#ifdef CLIENT_DLL + class C_DODPlayer; +#else + class CDODPlayer; +#endif + +// Entity Messages +#define DOD_PLAYER_POP_HELMET 1 +#define DOD_PLAYER_REMOVE_DECALS 2 + +class CViewOffsetAnimation +{ +public: + CViewOffsetAnimation( CBasePlayer *pPlayer ) + { + m_pPlayer = pPlayer; + m_vecStart = vec3_origin; + m_vecDest = vec3_origin; + m_flLength = 0.0; + m_flEndTime = 0.0; + m_eViewAnimType = VIEW_ANIM_LINEAR_Z_ONLY; + m_bActive = false; + } + + static CViewOffsetAnimation *CreateViewOffsetAnim( CBasePlayer *pPlayer ) + { + CViewOffsetAnimation *p = new CViewOffsetAnimation( pPlayer ); + + Assert( p ); + + return p; + } + + void StartAnimation( Vector vecStart, Vector vecDest, float flTime, ViewAnimationType type ) + { + m_vecStart = vecStart; + m_vecDest = vecDest; + m_flLength = flTime; + m_flEndTime = gpGlobals->curtime + flTime; + m_eViewAnimType = type; + m_bActive = true; + } + + void Reset( void ) + { + m_bActive = false; + } + + void Think( void ) + { + if ( !m_bActive ) + return; + + if ( IsFinished() ) + { + m_bActive = false; + return; + } + + float flFraction = ( m_flEndTime - gpGlobals->curtime ) / m_flLength; + + Assert( m_pPlayer ); + + if ( m_pPlayer ) + { + Vector vecCurrentView = m_pPlayer->GetViewOffset(); + + switch ( m_eViewAnimType ) + { + case VIEW_ANIM_LINEAR_Z_ONLY: + vecCurrentView.z = flFraction * m_vecStart.z + ( 1.0 - flFraction ) * m_vecDest.z; + break; + + case VIEW_ANIM_SPLINE_Z_ONLY: + vecCurrentView.z = SimpleSplineRemapVal( flFraction, 1.0, 0.0, m_vecStart.z, m_vecDest.z ); + break; + + case VIEW_ANIM_EXPONENTIAL_Z_ONLY: + { + float flBias = Bias( flFraction, 0.2 ); + vecCurrentView.z = flBias * m_vecStart.z + ( 1.0 - flBias ) * m_vecDest.z; + } + break; + } + + m_pPlayer->SetViewOffset( vecCurrentView ); + } + } + + bool IsFinished( void ) + { + return ( gpGlobals->curtime > m_flEndTime || m_pPlayer == NULL ); + } + +private: + CBasePlayer *m_pPlayer; + Vector m_vecStart; + Vector m_vecDest; + float m_flEndTime; + float m_flLength; + ViewAnimationType m_eViewAnimType; + bool m_bActive; +}; + + +// Data in the DoD player that is accessed by shared code. +// This data isn't necessarily transmitted between client and server. +class CDODPlayerShared +{ +public: + +#ifdef CLIENT_DLL + friend class C_DODPlayer; + typedef C_DODPlayer OuterClass; + DECLARE_PREDICTABLE(); +#else + friend class CDODPlayer; + typedef CDODPlayer OuterClass; +#endif + + DECLARE_EMBEDDED_NETWORKVAR() + DECLARE_CLASS_NOBASE( CDODPlayerShared ); + + + CDODPlayerShared(); + ~CDODPlayerShared(); + + void SetStamina( float stamina ); + float GetStamina( void ) { return m_flStamina; } + + void Init( OuterClass *pOuter ); + + bool IsProne() const; + bool IsGettingUpFromProne() const; + bool IsGoingProne() const; + void SetProne( bool bProne, bool bNoAnimation = false ); + + bool IsBazookaDeployed( void ) const; + bool IsBazookaOnlyDeployed( void ) const; + bool IsSniperZoomed( void ) const; + bool IsInMGDeploy( void ) const; + bool IsProneDeployed( void ) const; + bool IsSandbagDeployed( void ) const; + bool IsDucking( void ) const; + + void SetDesiredPlayerClass( int playerclass ); + int DesiredPlayerClass( void ); + + void SetPlayerClass( int playerclass ); + int PlayerClass( void ); + + CWeaponDODBase* GetActiveDODWeapon() const; + + void SetDeployed( bool bDeployed, float flHeight = -1 ); + + QAngle GetDeployedAngles( void ) const; + float GetDeployedHeight( void ) const; + + void SetDeployedYawLimits( float flLeftYaw, float flRightYaw ); + void ClampDeployedAngles( QAngle *vecTestAngles ); + + void SetSlowedTime( float t ); + float GetSlowedTime( void ) const; + + void StartGoingProne( void ); + void StandUpFromProne( void ); + + bool CanChangePosition( void ); + + bool IsJumping( void ) { return m_bJumping; } + void SetJumping( bool bJumping ); + + bool IsSprinting( void ) { return m_bIsSprinting; } + + void ForceUnzoom( void ); + + void SetSprinting( bool bSprinting ); + void StartSprinting( void ); + void StopSprinting( void ); + + void SetCPIndex( int index ); + int GetCPIndex( void ) { return m_iCPIndex; } + + void SetLastViewAnimTime( float flTime ); + float GetLastViewAnimTime( void ); + + void ViewAnimThink( void ); + + void ResetViewOffsetAnimation( void ); + void ViewOffsetAnimation( Vector vecDest, float flTime, ViewAnimationType type ); + + void ResetSprintPenalty( void ); + + void SetPlanting( bool bPlanting ) + { + m_bPlanting = bPlanting; + } + + bool IsPlanting( void ) { return m_bPlanting; } + + void SetDefusing( bool bDefusing ) + { + m_bDefusing = bDefusing; + } + + bool IsDefusing( void ) { return m_bDefusing; } + + void ComputeWorldSpaceSurroundingBox( Vector *pVecWorldMins, Vector *pVecWorldMaxs ); + + void SetPlayerDominated( CDODPlayer *pPlayer, bool bDominated ); + bool IsPlayerDominated( int iPlayerIndex ); + bool IsPlayerDominatingMe( int iPlayerIndex ); + void SetPlayerDominatingMe( CDODPlayer *pPlayer, bool bDominated ); + +private: + + CNetworkVar( bool, m_bProne ); + + CNetworkVar( int, m_iPlayerClass ); + CNetworkVar( int, m_iDesiredPlayerClass ); + + CNetworkVar( float, m_flStamina ); + + CNetworkVar( float, m_flSlowedUntilTime ); + + CNetworkVar( bool, m_bIsSprinting ); + + CNetworkVar( float, m_flDeployedYawLimitLeft ); + CNetworkVar( float, m_flDeployedYawLimitRight ); + + CNetworkVar( bool, m_bPlanting ); + CNetworkVar( bool, m_bDefusing ); + + bool m_bGaveSprintPenalty; + +public: + float m_flNextProneCheck; // Prevent it switching their prone state constantly. + + QAngle m_vecDeployedAngles; + //float m_flDeployedHeight; + CNetworkVar( float, m_flDeployedHeight ); + + CNetworkVar( float, m_flUnProneTime ); + CNetworkVar( float, m_flGoProneTime ); + + CNetworkVar( float, m_flDeployChangeTime ); + + CNetworkVar( bool, m_bForceProneChange ); + + CNetworkVar( int, m_iCPIndex ); + + bool m_bJumping; + + float m_flLastViewAnimationTime; + + CViewOffsetAnimation *m_pViewOffsetAnim; + + CNetworkArray( bool, m_bPlayerDominated, MAX_PLAYERS+1 ); // array of state per other player whether player is dominating other players + CNetworkArray( bool, m_bPlayerDominatingMe, MAX_PLAYERS+1 ); // array of state per other player whether other players are dominating this player + +private: + + OuterClass *m_pOuter; +}; + + + +#endif // DOD_PLAYER_SHARED_H |