diff options
Diffstat (limited to 'game/shared/portal/portal_playeranimstate.h')
| -rw-r--r-- | game/shared/portal/portal_playeranimstate.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/game/shared/portal/portal_playeranimstate.h b/game/shared/portal/portal_playeranimstate.h new file mode 100644 index 0000000..1ebbfbc --- /dev/null +++ b/game/shared/portal/portal_playeranimstate.h @@ -0,0 +1,85 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef PORTAL_PLAYERANIMSTATE_H +#define PORTAL_PLAYERANIMSTATE_H +#ifdef _WIN32 +#pragma once +#endif + + +#include "convar.h" +#include "multiplayer_animstate.h" + + +#if defined( CLIENT_DLL ) + class C_Portal_Player; + #define CPortal_Player C_Portal_Player +#else + class CPortal_Player; +#endif + +//enum PlayerAnimEvent_t +//{ +// PLAYERANIMEVENT_FIRE_GUN=0, +// PLAYERANIMEVENT_THROW_GRENADE, +// PLAYERANIMEVENT_ROLL_GRENADE, +// PLAYERANIMEVENT_JUMP, +// PLAYERANIMEVENT_RELOAD, +// PLAYERANIMEVENT_SECONDARY_ATTACK, +// +// PLAYERANIMEVENT_HS_NONE, +// PLAYERANIMEVENT_CANCEL_GESTURES, // cancel current gesture +// +// PLAYERANIMEVENT_COUNT +//}; + +// ------------------------------------------------------------------------------------------------ // +// CPlayerAnimState declaration. +// ------------------------------------------------------------------------------------------------ // +class CPortalPlayerAnimState : public CMultiPlayerAnimState +{ +public: + + DECLARE_CLASS( CPortalPlayerAnimState, CMultiPlayerAnimState ); + + CPortalPlayerAnimState(); + CPortalPlayerAnimState( CBasePlayer *pPlayer, MultiPlayerMovementData_t &movementData ); + ~CPortalPlayerAnimState(); + + void InitPortal( CPortal_Player *pPlayer ); + CPortal_Player *GetPortalPlayer( void ) { return m_pPortalPlayer; } + + virtual void ClearAnimationState(); + + virtual Activity TranslateActivity( Activity actDesired ); + + void DoAnimationEvent( PlayerAnimEvent_t event, int nData = 0 ); + + void Teleport( const Vector *pNewOrigin, const QAngle *pNewAngles, CPortal_Player* pPlayer ); + + bool HandleMoving( Activity &idealActivity ); + bool HandleJumping( Activity &idealActivity ); + bool HandleDucking( Activity &idealActivity ); + +private: + + CPortal_Player *m_pPortalPlayer; + bool m_bInAirWalk; + + float m_flHoldDeployedPoseUntilTime; +}; + + +CPortalPlayerAnimState* CreatePortalPlayerAnimState( CPortal_Player *pPlayer ); + + +// If this is set, then the game code needs to make sure to send player animation events +// to the local player if he's the one being watched. +extern ConVar cl_showanimstate; + + +#endif // PORTAL_PLAYERANIMSTATE_H |