summaryrefslogtreecommitdiff
path: root/src/managers/HookSystemManager.hpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-02-22 23:30:10 +0000
committerGitHub <noreply@github.com>2026-02-22 23:30:10 +0000
commitb88813c7efa4b7b0c5fe01471c5fa5b67a61dc7e (patch)
tree4454e82bc033d7e28a23ee372d0e3f48341d0aaa /src/managers/HookSystemManager.hpp
parentb4ee4674f9a74e3d602c7fb17bc09f79d221583c (diff)
event: refactor HookSystem into a typed event bus (#13333)
Refactors the old HookSystem into a typed event bus with clear separation, discovery and types.
Diffstat (limited to 'src/managers/HookSystemManager.hpp')
-rw-r--r--src/managers/HookSystemManager.hpp60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/managers/HookSystemManager.hpp b/src/managers/HookSystemManager.hpp
deleted file mode 100644
index 647e9670..00000000
--- a/src/managers/HookSystemManager.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#pragma once
-
-#include "../defines.hpp"
-
-#include <unordered_map>
-#include <any>
-#include <array>
-#include <list>
-
-#include <csetjmp>
-
-#define HANDLE void*
-
-// global type alias for hooked functions. Passes itself as a ptr when called, and `data` additionally.
-
-using HOOK_CALLBACK_FN = std::function<void(void*, SCallbackInfo& info, std::any data)>;
-
-struct SCallbackFNPtr {
- WP<HOOK_CALLBACK_FN> fn;
- HANDLE handle = nullptr;
-};
-
-#define EMIT_HOOK_EVENT(name, param) \
- { \
- static auto* const PEVENTVEC = g_pHookSystem->getVecForEvent(name); \
- SCallbackInfo info; \
- g_pHookSystem->emit(PEVENTVEC, info, param); \
- }
-
-#define EMIT_HOOK_EVENT_CANCELLABLE(name, param) \
- { \
- static auto* const PEVENTVEC = g_pHookSystem->getVecForEvent(name); \
- SCallbackInfo info; \
- g_pHookSystem->emit(PEVENTVEC, info, param); \
- if (info.cancelled) \
- return; \
- }
-
-class CHookSystemManager {
- public:
- CHookSystemManager();
-
- // returns the pointer to the function.
- // losing this pointer (letting it get destroyed)
- // will equal to unregistering the callback.
- [[nodiscard("Losing this pointer instantly unregisters the callback")]] SP<HOOK_CALLBACK_FN> hookDynamic(const std::string& event, HOOK_CALLBACK_FN fn,
- HANDLE handle = nullptr);
- void unhook(SP<HOOK_CALLBACK_FN> fn);
-
- void emit(std::vector<SCallbackFNPtr>* const callbacks, SCallbackInfo& info, std::any data = 0);
- std::vector<SCallbackFNPtr>* getVecForEvent(const std::string& event);
-
- bool m_currentEventPlugin = false;
- jmp_buf m_hookFaultJumpBuf;
-
- private:
- std::unordered_map<std::string, std::vector<SCallbackFNPtr>> m_registeredHooks;
-};
-
-inline UP<CHookSystemManager> g_pHookSystem;