#include "Pickable.h" #include "Actor.h" #include "Engine.h" #include "Container.h" #include "Gui.h" #include "Healer.h" #include "LightningBolt.h" #include "Confuser.h" #include "Fireball.h" bool Pickable::pick(Actor* owner, Actor* wearer) { if (wearer->container && wearer->container->add(owner)) { engine->actors.remove(owner); return true; } return false; } bool Pickable::use(Actor* owner, Actor* wearer) { if (wearer->container) { wearer->container->remove(owner); delete owner; return true; } return false; } void Pickable::drop(Actor* owner, Actor* wearer) { if (wearer->container) { wearer->container->remove(owner); engine->actors.push(owner); owner->x = wearer->x; owner->y = wearer->y; engine->gui->message(engine->gui->lightGrey, "%s drops a %s.", wearer->name.c_str(), owner->name.c_str()); } } Pickable* Pickable::create(TCODZip& zip) { PickableType type = (PickableType)zip.getInt(); Pickable* pickable = NULL; switch (type) { case HEALER: pickable = new Healer(0); break; case LIGHTNING_BOLT: pickable = new LightningBolt(0, 0); break; case CONFUSER: pickable = new Confuser(0, 0); break; case FIREBALL: pickable = new Fireball(0, 0); break; } pickable->load(zip); return pickable; }