//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================//

#ifndef TFC_BUILDING_H
#define TFC_BUILDING_H
#ifdef _WIN32
#pragma once
#endif


#include "baseanimating.h"
#include "tfc_shareddefs.h"


class CTFBaseBuilding : public CBaseAnimating
{
public:
	EHANDLE real_owner;
};


class CTFTeleporter : public CTFBaseBuilding
{
public:
	void Spawn(void);
	void Precache(void);

	void EXPORT Teleporter_Explode( void );
	void EXPORT TeleporterThink( void );
	void EXPORT TeleporterTouch( CBaseEntity *pOther );

	Class_T Classify(void) { return CLASS_MACHINE; };
	int BloodColor( void ) { return DONT_BLEED; }

	void Remove( void );

	void TeamFortress_TakeEMPBlast(CBaseEntity* pevGren);
	void Finished( void );
	static CTFTeleporter *CreateTeleporter( Vector vecOrigin, Vector vecAngles, CBaseEntity *pOwner, int type );
	BOOL EngineerUse( CBasePlayer *pPlayer );
	void Killed( CBaseEntity *pevInflictor, CBaseEntity *pevAttacker, int iGib );
	void TeleporterSend( CBasePlayer *pPlayer );
	void TeleporterReceive( CBasePlayer *pPlayer, float flDelay );
	void TeleporterKilled( void );
	BOOL TeleportersReady( void );
	void TeleporterFadePlayer( int direction );
	void TeleporterProcessFade( void );
	void SetTeleporterRings( int state );
	void SetTeleporterParticles( int state );
	float GetDamageMultiplier( void );
	CTFTeleporter* FindMatch( void );
	const Vector& GetTeamColor( void );
	bool PlayerIsStandingOnTeleporter( CBaseEntity *pOther );

	CBasePlayer *m_pPlayer;	// player being teleported

	float m_flInitialUseDelay;

	int m_iType;		// entry or exit
	int m_iState;		// state of the teleporter (idle, ready, sending, etc.)
	int m_iDestroyed;	// has this teleporter been destroyed
	
	int	m_iShardIndex;	// Metal shards

	float m_flMyNextThink;	// used to control the pace at which the teleporters work
	float m_flDamageDelay; // damage multiplier that slows the teleporters when they're damaged
};


#endif // TFC_BUILDING_H