54 lines
1.1 KiB
C++
54 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 *chooseFromInventory(Actor *owner);
|
|
};
|
|
|
|
class MonsterAi : public Ai {
|
|
public :
|
|
MonsterAi();
|
|
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);
|
|
void load(TCODZip &zip);
|
|
void save(TCODZip &zip);
|
|
protected:
|
|
int nbTurns;
|
|
Ai *oldAi;
|
|
};
|
|
|
|
class ConfusedMonsterAi : public TemporaryAi {
|
|
public:
|
|
ConfusedMonsterAi(int nbTurns);
|
|
void update(Actor *owner);
|
|
};
|