#ifndef SHIELD_H
#define SHIELD_H

/**
* The Blob
* @version 9-5-2002
* @author Joseph 'Pcjoe' Florencio
*/
class CShield : public CBaseEntity
{	
public:
	/**
	* Precaches models
	*/
	void Precache( void );

	/**
	* Spawn the Blob
	*/
	void Spawn();

	int Classify(){return CLASS_SHIELD;}
	/**
	* touch function
	* @param CBaseEntity *pOther: item that touches it
	*/
	void EXPORT ShieldTouch( CBaseEntity *pOther );

	/**
	* Get the owner of the shield attack
	* @param entvars_t *pevOwner: The owner of the entity
	* Return: the owner in casted to the CBasePlayer struct
	*/
	CBasePlayer *GetOwner( entvars_t *pevOwner );

	/**
	* Shield Think
	*/
	void EXPORT ShieldThink( void );

	/**
	* Expand Shield Think
	*/
	void EXPORT ExpandShieldThink( void );

	/**
	* Update shield size clientside
	*/
	void UpdateShieldClient( void );
	
	/**
	* Creates a shield
	* @param CBasePlayer *pl: Owner of the shield
	*/
	static CShield *CreateShield(CBasePlayer *pl);

	/**
	* Create the shield explosion
	*/
	void CreateExplosion( void );

	/**
	* Kill the shield
	*/
	void Remove( void );

	// Size of entity
	int m_iSize;
	// Rate we should add damage
	float flAddDamage;
	bool m_fRemove;
};
#endif
