Skip to content
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 25 commits into from
May 21, 2024
Merged

Merge devel for pre-release 3 #13

merged 25 commits into from
May 21, 2024

Conversation

RobynLlama
Copy link
Member

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.

@RobynLlama RobynLlama linked an issue May 21, 2024 that may be closed by this pull request
@RobynLlama RobynLlama merged commit 482ba52 into main May 21, 2024
@RobynLlama RobynLlama deleted the devel branch May 21, 2024 00:02
@RobynLlama RobynLlama linked an issue May 21, 2024 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants