-
-
Notifications
You must be signed in to change notification settings - Fork 75
Implement Plugin System for Adding Support for Third-Party (Non-miHoYo) Titles #752
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
base: main
Are you sure you want to change the base?
Conversation
Now the default values assignment only happens if correction is needed
As of the CoreLib do we want to include Discord RPC as well, tho it might need quite a adjustment to detach the currently hardcoded Discord IDs to metadata or separate configs location for per-game RPCs. |
I believe that for Discord RPC, we can probably do something along the lines of just showing a generic "Playing a custom game" to avoid having to implement custom IDs on our end. The alternative would be to have the plugin developer provide their own ID through the plugin configuration interface/code that we expose and display a generic message if that feature is not used. |
We can re-use the managed code part for Discord integration. The IDs for the Discord Presence will be provided by the plugin, stored in IPluginPresetConfig instance. If it's null, then tell the managed code to disable Discord Presence for that certain game. |
Use Free() provided by IFree interface instead.
This to avoid GC kicking in, making string[] resolvedIp to become null.
100% reviewed source file: 'en_US.json' on 'es_419'.
100% reviewed source file: 'en_US.json' on 'ja_JP'.
|
{ | ||
#nullable enable | ||
// DO NOT REMOVE! USED FOR LATER! | ||
string? pluginName = pluginUpdateName.Item2.Name; |
Check warning
Code scanning / QDNET
Unused local variable Warning
#nullable enable | ||
// DO NOT REMOVE! USED FOR LATER! | ||
string? pluginName = pluginUpdateName.Item2.Name; | ||
string? pluginAuthor = pluginUpdateName.Item2.Author; |
Check warning
Code scanning / QDNET
Unused local variable Warning
// DO NOT REMOVE! USED FOR LATER! | ||
string? pluginName = pluginUpdateName.Item2.Name; | ||
string? pluginAuthor = pluginUpdateName.Item2.Author; | ||
string? pluginDescription = pluginUpdateName.Item2.Description; |
Check warning
Code scanning / QDNET
Unused local variable Warning
string? pluginName = pluginUpdateName.Item2.Name; | ||
string? pluginAuthor = pluginUpdateName.Item2.Author; | ||
string? pluginDescription = pluginUpdateName.Item2.Description; | ||
GameVersion pluginUpcomingVersion = pluginUpdateName.Item2.PluginVersion ?? GameVersion.Empty; |
Check warning
Code scanning / QDNET
Unused local variable Warning
string? pluginAuthor = pluginUpdateName.Item2.Author; | ||
string? pluginDescription = pluginUpdateName.Item2.Description; | ||
GameVersion pluginUpcomingVersion = pluginUpdateName.Item2.PluginVersion ?? GameVersion.Empty; | ||
GameVersion pluginUpcomingStandardVersion = pluginUpdateName.Item2.StandardVersion ?? GameVersion.Empty; |
Check warning
Code scanning / QDNET
Unused local variable Warning
string? pluginDescription = pluginUpdateName.Item2.Description; | ||
GameVersion pluginUpcomingVersion = pluginUpdateName.Item2.PluginVersion ?? GameVersion.Empty; | ||
GameVersion pluginUpcomingStandardVersion = pluginUpdateName.Item2.StandardVersion ?? GameVersion.Empty; | ||
DateTimeOffset pluginCreationDate = (pluginUpdateName.Item2.CreationDate ?? default).ToLocalTime(); |
Check warning
Code scanning / QDNET
Unused local variable Warning
GameVersion pluginUpcomingVersion = pluginUpdateName.Item2.PluginVersion ?? GameVersion.Empty; | ||
GameVersion pluginUpcomingStandardVersion = pluginUpdateName.Item2.StandardVersion ?? GameVersion.Empty; | ||
DateTimeOffset pluginCreationDate = (pluginUpdateName.Item2.CreationDate ?? default).ToLocalTime(); | ||
DateTimeOffset pluginCompileDate = (pluginUpdateName.Item2.CompiledDate ?? default).ToLocalTime(); |
Check warning
Code scanning / QDNET
Unused local variable Warning
Main Goal
As per title says, this PR implements a Plugin System for Collapse Launcher, which will bring supports for any third-party (non-miHoYo) games.
This PR is still heavily in-development and in its state, is not yet ready to be implemented into Collapse Launcher's main repository. Though, the core library component is currently in the works.
First-Party Game Support Targets (by Collapse Project Team)
Heaven Burns Red (Plugin Maintainer: @neon-nyan) (In-progress)
Wuthering Waves (Plugin Maintainer: @Cryotechnic) (Pending)
Implementation Progress Tracking
Core Library
Collapse Launcher
RuntimeMarshalling
GitHub
Websites (main & status)
PR Status :
Templates
Changelog Prefixes