//=========== (C) Copyright 1999 Valve, L.L.C. All rights reserved. ===========
//
// The copyright to the contents herein is the property of Valve, L.L.C.
// The contents may be used and/or copied only with the written permission of
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
// the agreement/contract under which the contents have been supplied.
//
// Purpose:		
//
// $Workfile:     $
// $Date:         $
//
//-----------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================

#ifndef NPC_HOUNDEYE_H
#define NPC_HOUNDEYE_H
#pragma once


#include	"AI_BaseNPC.h"

#include	"energy_wave.h"

class CNPC_Houndeye : public CAI_BaseNPC
{
	DECLARE_CLASS( CNPC_Houndeye, CAI_BaseNPC );

public:
	void			Spawn( void );
	void			Precache( void );
	Class_T			Classify ( void );
	void			HandleAnimEvent( animevent_t *pEvent );
	float			MaxYawSpeed ( void );
	void			WarmUpSound ( void );
	void			AlertSound( void );
	void			DeathSound( void );
	void			WarnSound( void );
	void			PainSound( void );
	void			IdleSound( void );
	void			StartTask( const Task_t *pTask );
	void			RunTask( const Task_t *pTask );
	int				GetSoundInterests( void );
	void			SonicAttack( void );
	void			PrescheduleThink( void );
	void			WriteBeamColor ( void );
	int				RangeAttack1Conditions ( float flDot, float flDist );
	bool			FCanActiveIdle ( void );
	virtual int		TranslateSchedule( int scheduleType );
	Activity		NPC_TranslateActivity( Activity eNewActivity );
	virtual int		SelectSchedule( void );
	bool			HandleInteraction(int interactionType, void *data, CBaseCombatCharacter* sourceEnt);
	void			NPCThink(void);
	int				OnTakeDamage_Alive( const CTakeDamageInfo &info );
	void			Event_Killed( const CTakeDamageInfo &info );
	bool			IsAnyoneInSquadAttacking( void );
	void			SpeakSentence( int sentenceType );

	float			m_flNextSecondaryAttack;
	bool			m_bLoopClockwise;

	CEnergyWave*	m_pEnergyWave;
	float			m_flEndEnergyWaveTime;

	bool			m_fAsleep;// some houndeyes sleep in idle mode if this is set, the houndeye is lying down
	bool			m_fDontBlink;// don't try to open/close eye if this bit is set!

	DEFINE_CUSTOM_AI;
	
	DECLARE_DATADESC();
};


#endif // NPC_HOUNDEYE_H
