//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Player for SDK Game // // $NoKeywords: $ //=============================================================================// #ifndef SDK_PLAYER_H #define SDK_PLAYER_H #pragma once #include "player.h" #include "server_class.h" #include "sdk_playeranimstate.h" #include "sdk_shareddefs.h" //============================================================================= // >> SDK Game player //============================================================================= class CSDKPlayer : public CBasePlayer, public ISDKPlayerAnimStateHelpers { public: DECLARE_CLASS( CSDKPlayer, CBasePlayer ); DECLARE_SERVERCLASS(); DECLARE_PREDICTABLE(); DECLARE_DATADESC(); CSDKPlayer(); ~CSDKPlayer(); static CSDKPlayer *CreatePlayer( const char *className, edict_t *ed ); static CSDKPlayer* Instance( int iEnt ); // This passes the event to the client's and server's CPlayerAnimState. void DoAnimationEvent( PlayerAnimEvent_t event, int nData = 0 ); virtual void FlashlightTurnOn( void ); virtual void FlashlightTurnOff( void ); virtual int FlashlightIsOn( void ); virtual void PreThink(); virtual void PostThink(); virtual void Spawn(); virtual void InitialSpawn(); virtual void Precache(); virtual void Event_Killed( const CTakeDamageInfo &info ); virtual void LeaveVehicle( const Vector &vecExitPoint, const QAngle &vecExitAngles ); CWeaponSDKBase* GetActiveSDKWeapon() const; virtual void CreateViewModel( int viewmodelindex = 0 ); virtual void CheatImpulseCommands( int iImpulse ); CNetworkVar( int, m_iThrowGrenadeCounter ); // used to trigger grenade throw animations. CNetworkQAngle( m_angEyeAngles ); // Copied from EyeAngles() so we can send it to the client. CNetworkVar( int, m_iShotsFired ); // number of shots fired recently // Tracks our ragdoll entity. CNetworkHandle( CBaseEntity, m_hRagdoll ); // networked entity handle // In shared code. public: // ISDKPlayerAnimState overrides. virtual CWeaponSDKBase* SDKAnim_GetActiveWeapon(); virtual bool SDKAnim_CanMove(); void FireBullet( Vector vecSrc, const QAngle &shootAngles, float vecSpread, int iDamage, int iBulletType, CBaseEntity *pevAttacker, bool bDoEffects, float x, float y ); private: void CreateRagdollEntity(); ISDKPlayerAnimState *m_PlayerAnimState; }; inline CSDKPlayer *ToSDKPlayer( CBaseEntity *pEntity ) { if ( !pEntity || !pEntity->IsPlayer() ) return NULL; #ifdef _DEBUG Assert( dynamic_cast( pEntity ) != 0 ); #endif return static_cast< CSDKPlayer* >( pEntity ); } #endif // SDK_PLAYER_H