[DGD] How would this code work?

Noah Gibbs noah_gibbs at yahoo.com
Sun May 25 21:44:21 CEST 2003


  My experience is that it does, but then I haven't
had to do any of this in performance-critical
applications.  I mean, it's a MUD -- in normal
situations, you'll top out your bandwidth *way* before
you top out the processor capacity of a modern desktop
PC.

--- Ben Chambers <bjchamb at bellsouth.net> wrote:
> Cool, thanks!  How exactly does the performance of
> everything respond to
> massive multiple inheritance?  Such as a backpack
> that is not only a
> container but also inherits aspects of a weapon or
> something like that?  I
> assume it still works in a satisfactory manner?
> ----- Original Message -----
> From: "Noah Gibbs" <noah_gibbs at yahoo.com>
> To: <dgd at list.imaginary.com>
> Sent: Sunday, May 25, 2003 3:26 PM
> Subject: Re: [DGD] How would this code work?
> 
> 
> >   Here's something really simple:  it's not
> > "container->moveInto()", it's
> "container::moveInto()"
> > when container is something you inherit from.
> >
> >   Also, in container it doesn't look like you're
> > initializing mhContents, so you'll probably get an
> > error the first time you add an object into the
> > mapping, something about an invalid argument for
> the
> > left side of "+", because you're trying to add nil
> to
> > 1, and you can't do that.
> >   That's assuming you're in full-on error checking
> > mode, of course.  In modes where nil is equivalent
> to
> > 0 there'll be no problem at all.
> >
> >   But in any case, yes, your idea looks sound.
> > Phantasmal, not shockingly, does a lot of these
> same
> > things :-)
> >
> > --- Ben Chambers <bjchamb at bellsouth.net> wrote:
> > >
> >
>
------------------------------------------------------------
> > > 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
> >
> >
> > =====
> > ------
> > noah_gibbs at yahoo.com
> >
> > __________________________________
> > Do you Yahoo!?
> > The New Yahoo! Search - Faster. Easier. Bingo.
> > http://search.yahoo.com
> >
>
_________________________________________________________________
> > List config page: 
> http://list.imaginary.com/mailman/listinfo/dgd
> >
> 
>
_________________________________________________________________
> List config page: 
http://list.imaginary.com/mailman/listinfo/dgd


=====
------
noah_gibbs at yahoo.com

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com
_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list