//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Entity that propagates general data needed by clients for non-player AI characters
//
// $NoKeywords: $
//=============================================================================//

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

#include "shareddefs.h"

class CMonsterResource : public CBaseEntity
{
	DECLARE_CLASS( CMonsterResource, CBaseEntity );
public:
	DECLARE_SERVERCLASS();
	DECLARE_DATADESC();

	virtual void Spawn( void );
	virtual	int	 ObjectCaps( void ) { return BaseClass::ObjectCaps() | FCAP_DONT_SAVE; }

	virtual void Update( void );
	virtual int  UpdateTransmitState( void );

	virtual void SetBossHealthPercentage( float percentFull );	// if this is nonnegative, a HUD meter will be shown
	virtual void HideBossHealthMeter( void );

	virtual void SetBossStunPercentage( float percentFull );
	virtual void HideBossStunMeter( void );

	virtual void StartSkillShotComboMeter( float comboMaxDuration );
	virtual void IncrementSkillShotComboMeter( void );
	virtual void HideSkillShotComboMeter( void );

	void SetBossState( int iState ) { m_iBossState = iState; }

protected:
	CNetworkVar( int, m_iBossHealthPercentageByte );	// 0-255
	CNetworkVar( int, m_iBossStunPercentageByte );		// 0-255

	CNetworkVar( int, m_iSkillShotCompleteCount );		// the number of consecutive skill shots that have been completed. 0 = don't show combo HUD
	CNetworkVar( float, m_fSkillShotComboEndTime );		// the time when the current skill shot combo window closes

	CNetworkVar( int, m_iBossState );					// boss state?
};

extern CMonsterResource *g_pMonsterResource;

#endif // MONSTER_RESOURCE_H