#ifndef __Thinker_h__
#define __Thinker_h__

class scGame;
class Elf;

class Thinker
{
protected:
	scGame *game;
	bool myTurn;
	int x;
	int y;
	int oldTargetGridX;
	int oldTargetGridY;

	int movesRemaining;
	int maxMoves;

	bool thought;
	bool dead;
	int attacking;
	int distanceToEnemy;
	int attackDir;
public:
	int hp;
	int targetGridX;
	int targetGridY;
	int newTargetGridX;
	int newTargetGridY;
	Thinker(scGame *g);
	bool noElvesAt(int xx, int yy);
	Elf* getElfInPath(int xx, int yy);
	virtual bool isMyTurn();
	virtual void setMyTurn(bool turn);
	virtual void doMyTurn();
	virtual bool isEndOfTurn();
	virtual void setMoveCount(int count);
	void setPosition(int xx, int yy);
	int getX();
	int getY();
	int getGridWithAirQuotesX();
	int getGridWithAirQuotesY();
	bool isAtTarget();
	void think();
	void die();
	bool isDead();
};
#endif