//========= 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