Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Game Events: refactored event handler storage
This throws out the custom smart_list class in favor of a plain std::list. It also greatly simplifies a few things. First, event handlers no longer remove themselves from the main list in event_handlers. Now they just flag themselves as disabled (which means they will never execute once marked) and cleaned up later in a newly added cleanup stage. This means a handler no longer needs to keep its index in the active handler vector. This removal of reliance on indices also means I could add the aforementioned cleanup stage. With the smart_list code, event handlers were never actually removed from the active vector, nor any weak_ptrs pointing to them removed either. This wasn't exactly a problem, since the handlers were stored via shared_ptrs which would then simply be null after one deleted itself. Still, it's cleaner to drop any invalid ones (and unlockable weak_ptrs) from any relevant containers. I've opted to do this in manager::execute_on_events. Seems a good enough place as any. The net result of this is the code is much cleaner. We're able to get rid of a bunch of unnecessary feelers into various classes. This also makes the manager::iteration dereference code a lot easier to understand. There certainly could be further refactoring, but I think this is a good start.
- Loading branch information
1 parent
bd14e5f
commit 15d3b4a
Showing
8 changed files
with
104 additions
and
1,056 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.