56 lines
1.1 KiB
C++
56 lines
1.1 KiB
C++
|
class Ai : public Persistent {
|
||
|
public:
|
||
|
virtual void update(Actor *owner)=0;
|
||
|
static Ai *create(TCODZip &zip);
|
||
|
protected:
|
||
|
enum AiType {
|
||
|
MONSTER, CONFUSED_MONSTER, PLAYER
|
||
|
};
|
||
|
};
|
||
|
|
||
|
class PlayerAi : public Ai {
|
||
|
public :
|
||
|
int xpLevel;
|
||
|
PlayerAi();
|
||
|
int getNextLevelXp();
|
||
|
void update(Actor *owner);
|
||
|
|
||
|
void load(TCODZip &zip);
|
||
|
void save(TCODZip &zip);
|
||
|
protected :
|
||
|
bool moveOrAttack(Actor *owner, int targetx, int targety);
|
||
|
void handleActionKey(Actor *owner, int ascii);
|
||
|
Actor *choseFromInventory(Actor *owner);
|
||
|
};
|
||
|
|
||
|
class MonsterAi : public Ai {
|
||
|
public :
|
||
|
void update(Actor *owner);
|
||
|
void load(TCODZip &zip);
|
||
|
void save(TCODZip &zip);
|
||
|
protected :
|
||
|
void moveOrAttack(Actor *owner, int targetx, int targety);
|
||
|
int moveCount;
|
||
|
};
|
||
|
|
||
|
class TemporaryAi : public Ai {
|
||
|
public:
|
||
|
TemporaryAi(int nbTurns);
|
||
|
void update(Actor *owner);
|
||
|
void applyTo(Actor *actor);
|
||
|
protected:
|
||
|
int nbTurns;
|
||
|
Ai *oldAi;
|
||
|
};
|
||
|
|
||
|
class ConfusedMonsterAi : public Ai {
|
||
|
public:
|
||
|
ConfusedMonsterAi(int nbTurns, Ai *oldAi);
|
||
|
void update(Actor *owner);
|
||
|
void load(TCODZip &zip);
|
||
|
void save(TCODZip &zip);
|
||
|
protected:
|
||
|
int nbTurns;
|
||
|
Ai *oldAi;
|
||
|
};
|