//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

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

#include "hudelement.h"
#include <vgui_controls/Panel.h>

namespace vgui
{
	class IScheme;
};

class C_BaseBuildingModel;

//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
class CHudIconsVisuals : public CHudElement, public vgui::Panel
{
	DECLARE_CLASS_SIMPLE( CHudIconsVisuals, vgui::Panel );
public:
	CHudIconsVisuals( const char *pElementName );

	//void DrawObjectives( void );
	void DrawCapturePoints( void );
	//void DrawBuildings( void );
	//bool			ShouldDraw();
	//void DrawHealthBuildings( void );

	//void DrawHealthBar( C_BaseBuildingModel *pTarget );

protected:
	virtual void	ApplySchemeSettings( vgui::IScheme *scheme );
	virtual void	Paint();
	virtual void	OnThink();

};

// ##################################################################################
//	>> objective visual class
//
// ##################################################################################
class C_EnvRTSObjective : public C_BaseEntity, public IGameEventListener2 
{
public:
	DECLARE_CLASS( C_EnvRTSObjective , C_BaseEntity );
	DECLARE_CLIENTCLASS();

	// Constructor
	C_EnvRTSObjective ( void );
	~C_EnvRTSObjective ( void );

	// IGameEventListener interface:
	virtual void FireGameEvent( IGameEvent *event);
	void SetVisible( bool visible );

private:
	int m_iObjective;
	bool m_bVisible;

public:
	C_EnvRTSObjective			*m_pNext;
};

// ##################################################################################
//	>> capture point visual class
//
// ##################################################################################
class C_CapturePoint : public C_BaseEntity
{
public:
	DECLARE_CLASS( C_CapturePoint, C_BaseEntity );
	DECLARE_CLIENTCLASS();

	// Constructor
	C_CapturePoint ( void );
	~C_CapturePoint ( void );

	int GetOwnerShip() { return m_iTeamOwnership; };
	int GetCapturingTeam() { return m_iTeamCapturing; };
	float GetCaptureTime() { return m_flNextCaptureTime; };
	//float GetCaptureTime() { return m_flRemainingCaptureTime; };
	Vector GetIconTarget() { return m_vIconTarget; };
	//virtual int GetTeamNumber();
	virtual int	GetTeamNumber( void ) const;

private:
	int				m_iTeamOwnership;
	int				m_iTeamCapturing;
	//float			m_flRemainingCaptureTime;
	float			m_flNextCaptureTime;
	Vector			m_vIconTarget;

	//bool m_bBuildTimeInit;
	//float m_flNextCaptureTime;

public:
	C_CapturePoint			*m_pNext;
};


#endif // HUD_ICONVISUALS_H
