-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge devel for pre-release 3 #13
Merged
Merged
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Finally, all our work pays off. This update completely re-writes the deploy strategy of Flowerloader from being the main entrypoint into the program to being split across 3 segments.
The Game Specific Definitions
At the topmost layer: The game definitions define what method is used for logging and hooking into the supported game. The definitions then create layer 2 and supply it with the callbacks needed for logging. This allows games to define what surface is used for logging (if any) and if any other conditions (E.G. a timeout) should occur before hooking is completed. @AlbinoGeek put a lot of work into outlining the way the new system should work, since Typescript definitions still sorta confuse me a little, hehe. Thanks.
The Core
Once the game definitions have had their time to run, they hand off execution to the flowerCore. FlowerCore locates and loads every plugin, passes them the requisite LogSources and organizes the loaded plugin list by reading plugin metadata. It also handles exceptions and issues that arise during plugin loading. It has no concept of what game it is being run in and operates fully independently of the game-specific definitions files. Once its job is complete, all plugins are loaded and ready to operate.
The Patcher
FlowerPatcher is not directly called by any of the other layers, it exists horizontally to flowerCore and simply waits until triggered by plugins requesting a patch be created and applied to an object or method. In many ways, flowerPatcher is the beating heart of flowerLoader as, without it, all plugins would only run static code and responding to game events would be much harder. The majority of plugins will register many patches to achieve their goal.