TombsOfHarc/src/Pickable.hpp

59 lines
1.3 KiB
C++

class TargetSelector : public Persistent {
public:
enum SelectorType {
CLOSEST_MONSTER,
SELECTED_MONSTER,
WEARER_RANGE,
SELECTED_RANGE
};
TargetSelector(SelectorType type, float range);
void selectTargets(Actor *wearer, TCODList<Actor *>& list);
void save(TCODZip &zip);
void load(TCODZip &zip);
protected:
SelectorType type;
float range;
};
class Effect /*: public Persistent */{
public:
virtual bool applyTo(Actor *actor) = 0;
// void save(TCODZip &zip);
// void load(TCODZip &zip);
};
class Pickable : public Persistent {
public:
Pickable(TargetSelector *selector, Effect *effect);
virtual ~Pickable();
bool pick(Actor *owner, Actor *wearer);
void drop(Actor *owner, Actor *wearer);
bool use(Actor *owner, Actor *wearer);
static Pickable *create(TCODZip &zip);
void save(TCODZip &zip);
void load(TCODZip &zip);
protected:
TargetSelector *selector;
Effect *effect;
};
/* Effects */
class HealthEffect : public Effect {
public:
float amount;
const char *message;
HealthEffect(float amount, const char *message);
bool applyTo(Actor *actor);
};
class AiChangeEffect : public Effect {
public:
TemporaryAi *newAi;
const char *message;
AiChangeEffect(TemporaryAi *newAi, const char *message);
bool applyTo(Actor *actor);
};