You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.8 KiB
93 lines
2.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// The copyright to the contents herein is the property of Valve, L.L.C. |
|
// The contents may be used and/or copied only with the written permission of |
|
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in |
|
// the agreement/contract under which the contents have been supplied. |
|
// |
|
// Purpose: Revive |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// $NoKeywords: $ |
|
//============================================================================= |
|
|
|
#ifndef TF_REVIVE_H |
|
#define TF_REVIVE_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#ifdef CLIENT_DLL |
|
#include "c_tf_player.h" |
|
#else |
|
#include "tf_player.h" |
|
#endif |
|
|
|
#ifdef CLIENT_DLL |
|
#define CTFReviveMarker C_TFReviveMarker |
|
#endif |
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
class CTFReviveMarker : public CBaseAnimating |
|
{ |
|
DECLARE_DATADESC(); |
|
DECLARE_NETWORKCLASS(); |
|
DECLARE_CLASS( CTFReviveMarker, CBaseAnimating ); |
|
|
|
public: |
|
CTFReviveMarker(); |
|
|
|
virtual void Precache() OVERRIDE; |
|
virtual void Spawn( void ) OVERRIDE; |
|
virtual bool ShouldCollide( int collisionGroup, int contentsMask ) const OVERRIDE; |
|
virtual bool IsCombatItem( void ) const { return true; } |
|
|
|
#ifdef GAME_DLL |
|
static CTFReviveMarker *Create( CTFPlayer *pOwner ); |
|
virtual int UpdateTransmitState( void ) OVERRIDE; |
|
virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo ) OVERRIDE; |
|
void ReviveThink( void ); |
|
#else |
|
virtual void OnDataChanged( DataUpdateType_t updateType ) OVERRIDE; |
|
virtual int GetHealth( void ) const OVERRIDE { return m_iHealth; } |
|
virtual int GetMaxHealth( void ) const OVERRIDE { return m_iMaxHealth; } |
|
virtual bool IsVisibleToTargetID( void ) const OVERRIDE { return true; } |
|
#endif // GAME_DLL |
|
|
|
void SetOwner( CTFPlayer *pPlayer ); |
|
void SetReviver( CTFPlayer *pPlayer ) { m_pReviver = pPlayer; } |
|
CTFPlayer *GetOwner( void ) const { return m_hOwner; } |
|
CTFPlayer *GetReviver( void ) const { return m_pReviver; } |
|
#ifdef GAME_DLL |
|
void AddMarkerHealth( float flAmount ); |
|
bool IsReviveInProgress( void ); |
|
// Fully healed. Ask player if they'd like to be revived at their marker. |
|
bool ReviveOwner( void ); |
|
void PromptOwner( void ); |
|
bool HasOwnerBeenPrompted( void ) { return m_bOwnerPromptedToRevive; } |
|
void SetOwnerHasBeenPrompted( bool bValue ) { m_bOwnerPromptedToRevive = bValue; } |
|
#endif // GAME_DLL |
|
|
|
private: |
|
CNetworkHandle( CTFPlayer, m_hOwner ); |
|
CTFPlayer *m_pReviver; |
|
CNetworkVar( uint16, m_nRevives ); |
|
#ifdef GAME_DLL |
|
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_iHealth ); |
|
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_iMaxHealth ); |
|
float m_flHealAccumulator; |
|
bool m_bOwnerPromptedToRevive; |
|
float m_flLastHealTime; |
|
bool m_bOnGround; |
|
#else |
|
int m_iHealth; |
|
int m_iMaxHealth; |
|
bool m_bCalledForMedic; |
|
#endif // CLIENT_DLL |
|
}; |
|
|
|
#endif // TF_REVIVE_H
|
|
|