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.
211 lines
5.5 KiB
211 lines
5.5 KiB
5 years ago
|
//========= 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
|
||
|
|
||
|
|
||
|
|