#pragma once

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

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


//-----------------------------------------------------
// MovingEnemy Class									
//-----------------------------------------------------
class MovingEnemy : public Enemy
{
public:
	MovingEnemy(ResourceLoader* resourceLoaderPtr,const String& imagename,int hitPoints);				// Constructor
	virtual ~MovingEnemy();		// Destructor
	virtual void Tick(InputState *inputStatePtr);
	virtual void Tick(InputState *inputStatePtr, Hero *hero);

protected:
	//-------------------------------------------------
	// Eigen methoden								
	//-------------------------------------------------
	virtual void DetermineReactionToHero(Hero *hero);

	//-------------------------------------------------
	// Datamembers								
	//-------------------------------------------------

	// Used to determine whether the enemy is standing still, moving to the left, or moving to the right
	int m_MovementDirection;
	static const int MOVE_LEFT=-1;
	static const int STAND_STILL=0;
	static const int MOVE_RIGHT=1;

	//Attack Animation lengths
	static const int ANIM_LATTACK = 20;
	static const int ANIM_HATTACK = 30;
private: 	
	// -------------------------
	// Disabling default copy constructor and default 
	// assignment operator.
	// -------------------------
	MovingEnemy(const MovingEnemy& yRef);									
	MovingEnemy& operator=(const MovingEnemy& yRef);	
};

 
