#pragma once

//-----------------------------------------------------
// Include Files
//-----------------------------------------------------
#include "Matrix2D.h"
#include "Character.h"
#include "Hero.h"
#include "Enemy.h"
#include "Arrow.h"

//-----------------------------------------------------
// Class Forward Declarations
//-----------------------------------------------------
class ResourceLoader;
class Painter;
class InputState;
class Image;
class CollisionMesh;
class TextFormat;
class Audio;


//-----------------------------------------------------
// Archer Class									
//-----------------------------------------------------
class Archer : public Enemy
{
public:
	Archer(ResourceLoader* resourceLoaderPtr,const String& imagename,const String& arrowImage,int hitPoints);				// Constructor
	virtual ~Archer();		// Destructor
	void Paint(Painter *painterPtr, Matrix2D matView);
	void Tick(InputState *inputStatePtr);
	void Tick(InputState *inputStatePtr, Hero *hero);
	void DetermineReactionToHero(Hero *hero);
	Arrow* getArrow() const;

private: 
	//-------------------------------------------------
	// Eigen methoden								
	//-------------------------------------------------
	void Fire();

	//-------------------------------------------------
	// Datamembers								
	//-------------------------------------------------
	Arrow *m_ArrowPtr;
	
	// -------------------------
	// Disabling default copy constructor and default 
	// assignment operator.
	// -------------------------
	Archer(const Archer& yRef);									
	Archer& operator=(const Archer& yRef);	
};

 
