#pragma once

//-----------------------------------------------------
// Include Files
//-----------------------------------------------------
#include "Matrix2D.h"
#include "Character.h"
#include "EnemyList.h"

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


//-----------------------------------------------------
// Hero Class									
//-----------------------------------------------------
class Hero : public Character
{
public:
	Hero(ResourceLoader* resourceLoaderPtr,const String& imagename,int hitPoints, int rage);				// Constructor
	virtual ~Hero();		// Destructor
	void Paint(Painter *painterPtr, Matrix2D matView);
	void Tick(InputState *inputStatePtr);
	void KeyUp(TCHAR cKey);
	void ChangeCurrentRage(int rage);
	int getCurrentRage() const;
	int getRage() const;

	//-------------------------------------------------
	// Eigen methoden								
	//-------------------------------------------------
	void detectHealthChange(CollisionMesh *collisionMesh, int healthModifier);

private: 
	//-------------------------------------------------
	// Eigen methoden								
	//-------------------------------------------------
	void LightAttack(int maxAnimationSteps, int nextState, double x, double y, double width, double height);
	
	//-------------------------------------------------
	// Datamembers								
	//-------------------------------------------------
	int m_Rage;
	int m_CurrentRage;
	bool m_JumpPressed;
	bool m_AttackReleased;
	int m_AttackKeyTimer;
	int m_NextState;

	// -------------------------
	// Disabling default copy constructor and default 
	// assignment operator.
	// -------------------------
	Hero(const Hero& yRef);									
	Hero& operator=(const Hero& yRef);	
};

 
