#ifndef UNITACTION_H
#define UNITACTION_H

//#include "Unit.h"
#include "UnitEnumeration.h"
#include "MemoryManager/debugNew.h"

// forward declaration
class Unit;

class UnitAction
{
protected:

	/**
	* Unité qui effectue l'action
	* (les actions doivent modifier l'état interne de l'unité)
	*/
	Unit * unit;
	/**
	 * descripteur de l'etat de l'unité.
	 * ce descripteur est recuperer par les sous action crée par une action,
	 * ainsi, on gere la pile d'etats d'une unité conjointement avec l'action de
	 * l'unité.
	 */
	unitEnumeration::UnitState unitState;

public:
	UnitAction(Unit*u,unitEnumeration::UnitState state);
	~UnitAction(void);
	
	virtual void execute() = 0;

	/**
	 * methode utilisée pour signaler au gestionnaire d'action que l'action peut etre detruite
	 */
	void dispose();
};

#include "MemoryManager/debugNewOff.h"


#endif
