/**
* This file should be used in containers that wish to notify the
* above container that they are able to be registered or not.
* The function we_moved(object from, object to) should be called
* to allow the object to add and remove itself from the correct
* places.
* <p>
* We only worry about the open/close state, if something is open and
* locked we don't care. (I guess stuff can be locked open
* anyway).
* @author Pinkfish
* @started Thu Mar 5 16:20:10 CST 1998
* @see we_moved()
*/
inherit "/std/basic/close_lock";
/** @ignore yes */
void set_closed() {
::set_closed();
if (environment()) {
environment()->remove_inventory_container(TO);
}
} /* set_closed() */
/** @ignore yes */
void reset_closed() {
::set_closed();
if (environment()) {
environment()->add_inventory_container(TO);
}
} /* reset_closed() */
/**
* This method should be called when an object is moved. This will
* remove itself from the leaving container and add itself to the
* new one.
* @param from the object we came from
* @param to the object we are going to
*/
void we_moved(object from, object to) {
if (!query_closed()) {
if (from) {
from->remove_inventory_container(TO);
}
if (to) {
to->add_inventory_container(TO);
}
}
} /* we_moved() */
/** @ignore yes */
void dest_me() {
/* Please note, this is not designed to kill the object... */
if (environment()) {
environment()->remove_inventory_container(TO);
}
} /* dest_me() */