adg5/Pickable.cpp
2025-04-21 13:04:27 +10:00

33 lines
848 B
C++

#include "Pickable.h"
#include "Actor.h"
#include "Engine.h"
#include "Container.h"
#include "Gui.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(TCOD_ColorRGB(200,200,200), "%s drops a %s.",
wearer->name.c_str(), owner->name.c_str());
}
}