aboutsummaryrefslogtreecommitdiff
path: root/primedev/plugins/pluginmanager.h
diff options
context:
space:
mode:
authoruniboi <64006268+uniboi@users.noreply.github.com>2024-02-04 02:14:46 +0100
committerGitHub <noreply@github.com>2024-02-04 02:14:46 +0100
commitedf013952ca2d110f190dc8cd16e5529846656e4 (patch)
treeca219c17665810d94f2cb23b27f58fa9c82f3a62 /primedev/plugins/pluginmanager.h
parent6ad955ae0aab8b79910cb4a12777419a78a42a90 (diff)
downloadNorthstarLauncher-edf013952ca2d110f190dc8cd16e5529846656e4.tar.gz
NorthstarLauncher-edf013952ca2d110f190dc8cd16e5529846656e4.zip
Replaces the current plugin api with source interfaces. - backwards compatible - no more json in binaries (wtf) - does not rely on structs from third party libraries (wtf) - actually initializes variables - no more basically unused classes The launcher exposes almost everything required by plugins in interfaces that allow for backwards compatibility. The only thing that's passed to a plugin directly is the northstar dll HWND and a struct of data that's different for each plugin.
Diffstat (limited to 'primedev/plugins/pluginmanager.h')
-rw-r--r--primedev/plugins/pluginmanager.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/primedev/plugins/pluginmanager.h b/primedev/plugins/pluginmanager.h
new file mode 100644
index 00000000..8c021851
--- /dev/null
+++ b/primedev/plugins/pluginmanager.h
@@ -0,0 +1,33 @@
+#ifndef PLUGIN_MANAGER_H
+#define PLUGIN_MANAGER_H
+
+#include <windows.h>
+
+class Plugin;
+
+class PluginManager
+{
+public:
+ const std::vector<Plugin>& GetLoadedPlugins() const;
+ const std::optional<Plugin> GetPlugin(HMODULE handle) const;
+ bool LoadPlugins(bool reloaded = false);
+ void LoadPlugin(fs::path path, bool reloaded = false);
+ void ReloadPlugins();
+ void RemovePlugin(HMODULE handle);
+
+ // callback triggers
+ void InformSqvmCreated(CSquirrelVM* sqvm) const;
+ void InformSqvmDestroying(CSquirrelVM* sqvm) const;
+ void InformDllLoad(HMODULE module, fs::path path) const;
+ void RunFrame() const;
+
+private:
+ void InformAllPluginsInitialized() const;
+
+ std::vector<Plugin> plugins;
+ std::string pluginPath;
+};
+
+extern PluginManager* g_pPluginManager;
+
+#endif