mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2024-12-23 01:59:43 +08:00
102 lines
2.7 KiB
C++
102 lines
2.7 KiB
C++
//========= 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<CSDKPlayer*>( pEntity ) != 0 );
|
|
#endif
|
|
return static_cast< CSDKPlayer* >( pEntity );
|
|
}
|
|
|
|
|
|
#endif // SDK_PLAYER_H
|