Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

94 lines
2.8 KiB

5 years ago
//========= 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