diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-27 10:57:57 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-28 16:47:25 -0400 |
| commit | a8b14fba55007002d3f1a24b3bfc2d1a63c7d578 (patch) | |
| tree | c37951b27a84280c057137de1a7d1d0c5951f30e | |
| parent | f924e16b7f4dad1766343383bd678e0df7271fe3 (diff) | |
pke: remove event templates
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | runtime/runtime.cpp | 1 | ||||
| -rw-r--r-- | src/event.cpp | 138 | ||||
| -rw-r--r-- | src/event.hpp | 24 | ||||
| -rw-r--r-- | src/game.cpp | 2 |
5 files changed, 0 insertions, 167 deletions
@@ -202,7 +202,6 @@ $(DIR_BIN)/libpke.a: $(DIR_OBJ)/dynamic-array.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/ecs.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/embedded-fonts.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/entities.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/event.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/font.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/game-settings.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/game.o @@ -242,7 +241,6 @@ $(DIR_DBG)/libpke.a: $(DIR_OBJ)/dynamic-array.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/ecs.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/embedded-fonts.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/entities.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/event.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/font.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/game-settings.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/game.so diff --git a/runtime/runtime.cpp b/runtime/runtime.cpp index 36f50d3..e0e9a11 100644 --- a/runtime/runtime.cpp +++ b/runtime/runtime.cpp @@ -3,7 +3,6 @@ #include "arg-handler.hpp" #include "plugins.hpp" -#include "event.hpp" #include "game.hpp" #include "game-settings.hpp" #include "window-types.hpp" diff --git a/src/event.cpp b/src/event.cpp deleted file mode 100644 index 41c1d7a..0000000 --- a/src/event.cpp +++ /dev/null @@ -1,138 +0,0 @@ - -#include "event.hpp" -#include "pk.h" - -#include <cstring> -#include <type_traits> - -struct BaseEventBucket { - char name[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -}; - -template<typename Fn> -struct EventBucket : public BaseEventBucket { - using BaseEventBucket::name; - pk_arr_t<Fn> callbacks; -}; -using EventArr = pk_arr_t<EventBucket<EventHandler>>; -using TickArr = pk_arr_t<EventBucket<TickEvent>>; -EventArr eventBuckets; -TickArr tickBuckets; - -template<typename Fn> -void EventBucketFind(const char *name, BaseEventBucket*& bkt) { - assert(strlen(name) <= 16); - char safeName[16]; - memset(safeName, '\0', 16); - memcpy(safeName, name, strlen(name)); - - BaseEventBucket *baseBkt = nullptr; - pk_arr *arr = nullptr; - - if constexpr(std::is_same<Fn, EventHandler>::value) { - arr = &eventBuckets; - } - if constexpr(std::is_same<Fn, TickEvent>::value) { - arr = &tickBuckets; - } - assert(arr != nullptr); - for (long i = 0; i < arr->next; ++i) { - if constexpr(std::is_same<Fn, EventHandler>::value) { - EventArr &tArr = *reinterpret_cast<EventArr *>(arr); - baseBkt = &tArr[i]; - } - if constexpr(std::is_same<Fn, TickEvent>::value) { - TickArr &tArr = *reinterpret_cast<TickArr *>(arr); - baseBkt = &tArr[i]; - } - assert(baseBkt != nullptr); - if (strncmp(safeName, baseBkt->name, 16) == 0) { - bkt = baseBkt; - return; - } - } - if constexpr(std::is_same<Fn, EventHandler>::value) { - EventArr &tArr = *reinterpret_cast<EventArr *>(arr); - pk_arr_append_t(&tArr, {}); - bkt = &tArr[tArr.next-1]; - } - if constexpr(std::is_same<Fn, TickEvent>::value) { - TickArr &tArr = *reinterpret_cast<TickArr *>(arr); - pk_arr_append_t(&tArr, {}); - bkt = &tArr[tArr.next-1]; - } - assert(bkt != nullptr); - memcpy(bkt->name, safeName, 16); -} - -template<> -void Event_RegisterCallback<EventHandler>(const char *name, EventHandler handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind<EventHandler>(name, bkt); - EventBucket<EventHandler> *tBkt = reinterpret_cast<EventBucket<EventHandler> *>(bkt); - pk_arr_append_t(&tBkt->callbacks, handler); -} - -template<> -void Event_UnregisterCallback<EventHandler>(const char *name, EventHandler handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind<EventHandler>(name, bkt); - EventBucket<EventHandler> *tBkt = reinterpret_cast<EventBucket<EventHandler> *>(bkt); - for (uint32_t i = 0; i < tBkt->callbacks.next; ++i) { - if (tBkt->callbacks[i] == handler) { - pk_arr_remove_at(&tBkt->callbacks, i); - break; - } - } -} - -template<> -void Event_Dispatch<EventHandler>(const char *name) { - BaseEventBucket *bkt = nullptr; - EventBucketFind<EventHandler>(name, bkt); - EventBucket<EventHandler> *tBkt = reinterpret_cast<EventBucket<EventHandler> *>(bkt); - for (int64_t i = 0; i < tBkt->callbacks.next; ++i) { - tBkt->callbacks[i](); - } -} - -template<> -void Event_RegisterCallback<TickEvent>(const char *name, TickEvent handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind<TickEvent>(name, bkt); - EventBucket<TickEvent> *tBkt = reinterpret_cast<EventBucket<TickEvent> *>(bkt); - pk_arr_append_t(&tBkt->callbacks, handler); -} - -template<> -void Event_UnregisterCallback<TickEvent>(const char *name, TickEvent handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind<TickEvent>(name, bkt); - EventBucket<TickEvent> *tBkt = reinterpret_cast<EventBucket<TickEvent> *>(bkt); - for (uint32_t i = 0; i < tBkt->callbacks.next; ++i) { - if (tBkt->callbacks[i] == handler) { - pk_arr_remove_at(&tBkt->callbacks, i); - break; - } - } -} - -template<> -void Event_Dispatch<TickEvent, double>(const char *name, double d) { - BaseEventBucket *bkt = nullptr; - EventBucketFind<TickEvent>(name, bkt); - EventBucket<TickEvent> *tBkt = reinterpret_cast<EventBucket<TickEvent> *>(bkt); - for (uint32_t i = 0; i < tBkt->callbacks.next; ++i) { - tBkt->callbacks[i](d); - } -} - -void Event_Teardown() { - pk_arr_reset(&tickBuckets); - pk_arr_reset(&eventBuckets); -} - diff --git a/src/event.hpp b/src/event.hpp deleted file mode 100644 index 3f19bba..0000000 --- a/src/event.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef PKE_EVENT_HPP -#define PKE_EVENT_HPP - -typedef void (*EventHandler)(); -typedef void (*TickEvent)(double); - -template<typename Fn> -void Event_RegisterCallback(const char *name, Fn handler); -template<typename Fn> -void Event_UnregisterCallback(const char *name, Fn handler); -template<typename Fn, typename... Arguments> -void Event_Dispatch(const char *name, Arguments... args); - -template<> void Event_RegisterCallback<EventHandler>(const char *name, EventHandler handler); -template<> void Event_UnregisterCallback<EventHandler>(const char *name, EventHandler handler); -template<> void Event_Dispatch<EventHandler>(const char *name); - -template<> void Event_RegisterCallback<TickEvent>(const char *name, TickEvent handler); -template<> void Event_UnregisterCallback<TickEvent>(const char *name, TickEvent handler); -template<> void Event_Dispatch<TickEvent, double>(const char *name, double d); - -void Event_Teardown(); - -#endif /* PKE_EVENT_HPP */ diff --git a/src/game.cpp b/src/game.cpp index 12c5691..24bd43d 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -5,7 +5,6 @@ #include "components.hpp" #include "ecs.hpp" #include "entities.hpp" -#include "event.hpp" #include "font.hpp" #include "game-settings.hpp" #include "game-type-defs.hpp" @@ -298,7 +297,6 @@ GAME_SHUTDOWN: } PkePlugin_Teardown(); Game_Teardown(); - Event_Teardown(); EntityType_Teardown(); FontType_Teardown(); pke_ui_teardown(); |
