[DGD] How would this code work?
Ben Chambers
bjchamb at bellsouth.net
Sun May 25 21:11:11 CEST 2003
------------------------------------------------------------
GameObject.c (this is one of the base objects that will be provided)
------------------------------------------------------------
/* move the object <a> into this object
* throws an error if this is not possible
*/
atomic void moveInto(object a)
{
error("This object is not a container.");
}
/* move the object <a> out of this object
* throws an error if this is not possible
*/
atomic void moveFrom(object a)
{
error("This object is not a container.");
}
/* move this object from object <a> into object <b>
* throws an error if this is not possible
*/
atomic void move(object a, object b)
{
a->moveFrom(this_object());
b->moveInto(this_object());
}
------------------------------------------------------------
Container.c (this is one of the base objects that will be provided)
------------------------------------------------------------
inherit "GameObject.c";
mapping mhContents;
/* move the object <a> into this object
* throws an error if this is not possible
*/
atomic void moveInto(object a)
{
mhContents[object_name(a)] = mhContents[object_name(a)] + 1;
}
/* move the object <a> out of this object
* throws an error if this is not possible
*/
atomic void moveFrom(object a)
{
if (!mhContents[object_name(a)])
error("Cannot remove something that isn't here.");
mhContents[object_name(a)] = mhContents[object_name(a)] - 1;
}
------------------------------------------------------------
Backpack.c (this is something a wizard might make)
------------------------------------------------------------
inherit "GameObject.c";
inherit container "Container.c";
int miCapacity;
int miContentSize;
int remaining_capacity()
{
return miCapacity - miContentSize;
}
/* move the object <a> into this object
* throws an error if this is not possible
*/
atomic void moveInto(object a)
{
container->moveInto(a);
if (a->item_size() > remaining_capacity())
error("That will not fit.");
miContentSize += a->item_size();
}
/* move the object <a> out of this object
* throws an error if this is not possible
*/
atomic void moveFrom(object a)
{
container->moveFrom(a);
miContentSize -= a->item_size();
}
Would it behave as expected? Are there any problems that code like this
could cause in the future? Any suggestions for ways of improving this?
_________________________________________________________________
List config page: http://list.imaginary.com/mailman/listinfo/dgd
More information about the DGD
mailing list