On Thu, Feb 9, 2012 at 1:34 AM, StyxD <sty...@gmail.com> wrote: > I'm having some more issues with the event architecture. I can't > decide whether I should change my approach or if it's worthy to extend > the event module.
Couldn't you do the following? Create a time event with a small interval, then set repeat to a finite number, so that interval * repeat equals the lifetime of the bubble. Then use the simple factory::register_event method to hook up the update_position() method of your bubble object. In there you can then check the repeat count of the passed event structure and once it reaches 0, destroy the bubble. That would allow you to work with a single time event and you will not have to re-register events every time. The one issue I see is that in listener_python::raise_event, the triggering event is passed to the callback, not the one you registered. So you will not get at the recent repeat count. So the triggering event would have to be updated with the current repeat count before executing the callback. But this would be the only change to the event module required. Would that work for you? > I also wonder, whether there should be some kind of character action > event. Like "on character's movement" or "character reached point x,y > on map". Or is it handled by schedules? Don't think you'd need this with the approach above, but generally there needs to be a move event for characters. The idea would be that the move event structure contains start and end coordinates of the move and the id of the character performing the move. This could be triggered in moving::update(). The event structure would also have the two fields leaving and entering that could be set to the name of a zone. The move_event_handler could then check based on start and end coordinates if this move took the character in or out of the given zone. Of course a move callback could be registered with * just a character id, * just an entering zone id * just a leaving zone id * character id + entering zone id * character id + leaving zone id So your bubble could register the character it belongs to. A sensitive area on the map (trap or pressure plate, etc.) could register for any character entering or leaving its area. So if you wanted to spent the extra effort, you could work with a move event to update bubble position (which would be more efficient than the repeating timer) and a one-time timer to destroy the bubble. Maybe I could work on the move event implementation. Hadn't given it that much thought before, and was unsure how to properly handle the entering and leaving of zones. But it seems this is pretty simple if the event contains both start and end of the move. Let me know what you think and how you would like to proceed. Kai _______________________________________________ Adonthell-devel mailing list Adonthell-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/adonthell-devel