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

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

#include "hl2wars/rts_shareddefs.h"

// ##################################################################################
//	>> Mouse brush
//
// ##################################################################################
//-----------------------------------------------------------------------------
// Purpose: A brush that will react on a mouse click, adds the npc of the rts player, 
//           and orders those to move to this brush to do something (trigger it).
//			client side: so we can detect the brush. Also this class provide support
//			to draw a rectangle selection visual around the brush.
//-----------------------------------------------------------------------------
class C_MouseRTSBrush : public CBaseEntity
{
public:
	DECLARE_CLASS( C_MouseRTSBrush, CBaseEntity );

	DECLARE_CLIENTCLASS();

	C_MouseRTSBrush();
	~C_MouseRTSBrush();

	void Spawn( void );
	//void ClientThink( void );

	// important for the mouse detection!
	virtual bool			IsRTSBrush( void ) { return true; }

	virtual int GetBrushType( void ) { return MOUSEBRUSH_BASIC; }

	virtual int	DrawModel( int flags );

	virtual bool ShouldDraw( void ) 
	{
		m_bBaseClassDraw = BaseClass::ShouldDraw();
		return true;
	}

	// if we are not solid, we should be ignored by almost all tracing rules
	virtual bool					StandardFilterIgnoreMe( void ) { return m_bSolid; }

	virtual void OnCursorEntered();
	virtual void OnCursorExited();

	virtual void SetDrawSelection( bool state ) { m_bDrawSelection = state; }
	virtual bool IsSelected() { return false; }

	virtual color32 GetColor();
	//virtual Vector GetTargetSelection( void );
	virtual QAngle GetTargetSelectionAngle( void);

protected:
	bool m_bDrawSelection;
	bool m_bBaseClassDraw;
	float m_fYawSelection;
	bool m_bSolid;
};

#endif // C_MOUSERTSMODEL