[MUD-Dev] Room-based vs. coordinate-based
Alex Oren
alexo at bigfoot.com
Mon Jun 23 08:59:50 CEST 1997
Which brings me back to the topic.
How would I implement the equivalent of room-spoofs in a coordinate-based
setting?
Shawn wrote:
} clawrenc at cup.hp.com wrote:
} >
} > In <339C618C.167EB0E7 at iname.com>, on 06/09/97
} > at 05:16 PM, Shawn Halpenny <malachai at iname.com> said:
}
} [ original handling of user-programming ]
}
} > You're going to have a checklist to run every piece of code past to
} > make sure nothing has been missed? You're never going to skip or
} > skimp something on this list? This list is going to always be updated
} > as the system changes?
} >
} > >The solution above is not exactly conducive to that.
} >
} > Quite.
}
} _Originally_ that was my intent, though the more I thought about what I
} wanted to be possible, the less I looked forward to the amount of work
} involved. So no, there won't be any checklist that I have to watch over,
} since if I can make things generic enough, everything will hold itself
} together and not need me to hold its hand. The addition of user-programming
} was a fairly recent thing for me, so some changes of methodology are
} definitely necessary.
}
} [ spoof implementation ]
}
} Which is essentially what I'm getting at here:
}
} > >I make the magic-effect creator a method on a container (say, a room)
} > >and whenever I want to "spoof", I just override the method in a
} > >derived object (something I already do elsewhere, hence my realizing
} > >I'd not thought the post through enough). Simple enough, since all
} > >the rooms are derived from a common object (which would have been
} > >that magic-effect creator if you went high enough up the inheritance
} > >tree) anyhow. That should now account for stupid programmers and
} > >make things much more scalable. And of course, if one does the
} > >inheritance and overriding properly, it's nicely applicable to all
} > >sorts of other situations.
} >
} > Bingo.
}
} Good. Nothing new or quirky going on here, just plain OOD. What I called
} "inheritance" is your spoof-by-cloning, and your generic methods are what
} I do through overriding.
}
} > >If A wants to watch B, A sticks a reference to itself in a list
} > >inside B. State changes in B will now send notification to A
} > >provided the change matches the parameters required by the watcher.
} > >A can stop watching B whenever it chooses, but only the destruction
} > >of B can force A to stop watching B.
} >
} > Ahh. I don't have any sort of filtering or definition of watchers. A
} > watcher just triggers whenever an object changes. The result is a
} > message sent to the waiting object of the form, "I HAVE CHANGED". I
} > then leave it up to the waiting object to figure out what changed, and
} > if they are interested in that change.
}
} A watcher will only trigger if the correct property (or properties)
} changes so that the watching object isn't deluged by messages about state
} changes it doesn't care about on busy objects. The waiting object only has
} to decide what to do with the change, since it only gets messages
} concerning the things it cares about.
}
} > This allows a watcher to trigger on a state change for a private data
} > member in an object. Depending on the strictness of your views on
} > data encapsulation, this can be thought of as a Good Thing, or a Bad
} > Thing.
}
} Watchers can trigger on private data changes by not defining exactly what
} they're watching, but choosing to watch for a change in any property. So
} I still maintain the low message traffic for watchers waiting on a few
} properties, and don't have to cheat my encapsulation by allowing watching
} on the entire object if desired.
}
} --
} Shawn Halpenny
}
} "Caesar si viveret, ad remum dareris"
} - Latin for All Occasions
}
}
Have fun,
Alex.
More information about the mud-dev-archive
mailing list