Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: CTF Powerup Rune.
//
//=============================================================================//
#ifndef ENTITY_RUNE_H
#define ENTITY_RUNE_H
#ifdef _WIN32
#pragma once
#endif
#include "tf_powerup.h"
#include "tf_gamerules.h"
#define TF_RUNE_STRENGTH "models/pickups/pickup_powerup_strength.mdl"
#define TF_RUNE_RESIST "models/pickups/pickup_powerup_defense.mdl"
#define TF_RUNE_REGEN "models/pickups/pickup_powerup_regen.mdl"
#define TF_RUNE_HASTE "models/pickups/pickup_powerup_haste.mdl"
#define TF_RUNE_VAMPIRE "models/pickups/pickup_powerup_vampire.mdl"
#define TF_RUNE_REFLECT "models/pickups/pickup_powerup_reflect.mdl"
#define TF_RUNE_PRECISION "models/pickups/pickup_powerup_precision.mdl"
#define TF_RUNE_AGILITY "models/pickups/pickup_powerup_agility.mdl"
#define TF_RUNE_KNOCKOUT "models/pickups/pickup_powerup_knockout.mdl"
#define TF_RUNE_KING "models/pickups/pickup_powerup_king.mdl"
#define TF_RUNE_PLAGUE "models/pickups/pickup_powerup_plague.mdl"
#define TF_RUNE_SUPERNOVA "models/pickups/pickup_powerup_supernova.mdl"
#define TF_RUNE_TEMP_CRIT "models/pickups/pickup_powerup_crit.mdl"
#define TF_RUNE_TEMP_UBER "models/pickups/pickup_powerup_uber.mdl"
DECLARE_AUTO_LIST( IInfoPowerupSpawnAutoList );
//=============================================================================
//
// CTF Rune class. Powerups which last the life of the player and drop when they die
//
//=============================================================================
class CTFRune : public CTFPowerup { public: DECLARE_CLASS( CTFRune, CTFPowerup );
CTFRune(); ~CTFRune();
virtual void Spawn( void ) OVERRIDE; virtual void Precache( void ) OVERRIDE; virtual bool MyTouch( CBasePlayer *pPlayer ); static CTFRune* CreateRune( const Vector &vecOrigin, RuneTypes_t nType, int nTeam, bool bShouldReposition, bool bApplyForce, Vector vecSpawnDirection = vec3_origin ); static bool RepositionRune( RuneTypes_t nType, int nTeamNumber ); float GetRuneRepositionTime( void );
virtual const char *GetDefaultPowerupModel( void ) { if ( m_nRuneType == RUNE_STRENGTH ) { return TF_RUNE_STRENGTH; } else if ( m_nRuneType == RUNE_RESIST ) { return TF_RUNE_RESIST; } else if ( m_nRuneType == RUNE_REGEN ) { return TF_RUNE_REGEN; } else if ( m_nRuneType == RUNE_HASTE ) { return TF_RUNE_HASTE; } else if ( m_nRuneType == RUNE_VAMPIRE ) { return TF_RUNE_VAMPIRE; } else if ( m_nRuneType == RUNE_REFLECT ) { return TF_RUNE_REFLECT; } else if ( m_nRuneType == RUNE_PRECISION ) { return TF_RUNE_PRECISION; } else if ( m_nRuneType == RUNE_AGILITY ) { return TF_RUNE_AGILITY; } else if ( m_nRuneType == RUNE_KNOCKOUT ) { return TF_RUNE_KNOCKOUT; } else if ( m_nRuneType == RUNE_KING ) { return TF_RUNE_KING; } else if ( m_nRuneType == RUNE_PLAGUE ) { return TF_RUNE_PLAGUE; } else if ( m_nRuneType == RUNE_SUPERNOVA ) { return TF_RUNE_SUPERNOVA; } return TF_RUNE_STRENGTH; } virtual int UpdateTransmitState( void ) OVERRIDE; virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo ) OVERRIDE;
protected: bool m_bApplyForce; virtual void ComeToRest( void ); Vector m_vecSpawnDirection;
private: void BlinkThink();
RuneTypes_t m_nRuneType; int m_nBlinkCount; float m_flKillTime; float m_flCanPickupTime; int m_nTeam; bool m_bShouldReposition; };
//=============================================================================
//
// CTF Rune Temp class - Powerups whose effect lasts a length of time, then deactivates
//
//=============================================================================
class CTFRuneTemp : public CTFPowerup { public: DECLARE_CLASS( CTFRuneTemp, CTFPowerup );
CTFRuneTemp();
virtual void Spawn( void ) OVERRIDE; virtual void Precache( void ) OVERRIDE; virtual bool MyTouch( CBasePlayer *pPlayer ) OVERRIDE; virtual const char *GetDefaultPowerupModel( void ) OVERRIDE { return TF_RUNE_TEMP_CRIT; } virtual float GetRespawnDelay( void ) OVERRIDE; protected: void TempRuneRespawnThink( void );
int m_nRuneTempType; };
//=============================================================================
//
// Temporary Crit boost
//
//=============================================================================
class CTFRuneTempCrit : public CTFRuneTemp { public: DECLARE_CLASS( CTFRuneTempCrit, CTFRuneTemp );
CTFRuneTempCrit(); };
//=============================================================================
//
// Temporary Uber boost
//
//=============================================================================
class CTFRuneTempUber : public CTFRuneTemp { public: DECLARE_CLASS( CTFRuneTempUber, CTFRuneTemp );
CTFRuneTempUber();
virtual const char *GetDefaultPowerupModel( void ) OVERRIDE { return TF_RUNE_TEMP_UBER; }
};
//=============================================================================
//
// Powerup Spawn point class - location to spawn a powerup at
//
//=============================================================================
class CTFInfoPowerupSpawn : public CPointEntity, public IInfoPowerupSpawnAutoList { public: DECLARE_CLASS( CTFInfoPowerupSpawn, CPointEntity ); CTFInfoPowerupSpawn(); DECLARE_DATADESC(); virtual void Spawn() OVERRIDE;
bool IsDisabled() const { return m_bDisabled; } bool HasRune() const { return m_hRune != NULL; } void SetRune( CTFRune *pRune ) { m_hRune = pRune; }
private: bool m_bDisabled; int m_nTeam; CHandle< CTFRune > m_hRune; }; #endif // ENTITY_RUNE_H
|