aboutsummaryrefslogtreecommitdiff
path: root/primedev/plugins/interfaces/IPluginCallbacks.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/interfaces/IPluginCallbacks.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/interfaces/IPluginCallbacks.h')
-rw-r--r--primedev/plugins/interfaces/IPluginCallbacks.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/primedev/plugins/interfaces/IPluginCallbacks.h b/primedev/plugins/interfaces/IPluginCallbacks.h
new file mode 100644
index 00000000..c02ce8a6
--- /dev/null
+++ b/primedev/plugins/interfaces/IPluginCallbacks.h
@@ -0,0 +1,36 @@
+#ifndef IPLUGIN_CALLBACKS_H
+#define IPLUGIN_CALLBACKS_H
+
+#include <windows.h>
+#include <stdint.h>
+#include "squirrel/squirrel.h"
+
+// can't use bitwise ops on enum classes but I don't want these in the global namespace (user defined operators suck)
+namespace PluginContext
+{
+ enum : uint64_t
+ {
+ DEDICATED = 0x1,
+ CLIENT = 0x2,
+ };
+}
+
+struct PluginNorthstarData
+{
+ HMODULE pluginHandle;
+};
+
+class IPluginCallbacks
+{
+public:
+ virtual void
+ Init(HMODULE northstarModule, const PluginNorthstarData* initData, bool reloaded) = 0; // runs after the plugin is loaded and validated
+ virtual void Finalize() = 0; // runs after all plugins have been loaded
+ virtual bool Unload() = 0; // runs just before the library is freed
+ virtual void OnSqvmCreated(CSquirrelVM* sqvm) = 0;
+ virtual void OnSqvmDestroying(CSquirrelVM* sqvm) = 0;
+ virtual void OnLibraryLoaded(HMODULE module, const char* name) = 0;
+ virtual void RunFrame() = 0;
+};
+
+#endif