From a8b14fba55007002d3f1a24b3bfc2d1a63c7d578 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 27 May 2025 10:57:57 -0400 Subject: pke: remove event templates --- Makefile | 2 - runtime/runtime.cpp | 1 - src/event.cpp | 138 ---------------------------------------------------- src/event.hpp | 24 --------- src/game.cpp | 2 - 5 files changed, 167 deletions(-) delete mode 100644 src/event.cpp delete mode 100644 src/event.hpp diff --git a/Makefile b/Makefile index 9a82d8f..088b1f9 100644 --- a/Makefile +++ b/Makefile @@ -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 -#include - -struct BaseEventBucket { - char name[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -}; - -template -struct EventBucket : public BaseEventBucket { - using BaseEventBucket::name; - pk_arr_t callbacks; -}; -using EventArr = pk_arr_t>; -using TickArr = pk_arr_t>; -EventArr eventBuckets; -TickArr tickBuckets; - -template -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::value) { - arr = &eventBuckets; - } - if constexpr(std::is_same::value) { - arr = &tickBuckets; - } - assert(arr != nullptr); - for (long i = 0; i < arr->next; ++i) { - if constexpr(std::is_same::value) { - EventArr &tArr = *reinterpret_cast(arr); - baseBkt = &tArr[i]; - } - if constexpr(std::is_same::value) { - TickArr &tArr = *reinterpret_cast(arr); - baseBkt = &tArr[i]; - } - assert(baseBkt != nullptr); - if (strncmp(safeName, baseBkt->name, 16) == 0) { - bkt = baseBkt; - return; - } - } - if constexpr(std::is_same::value) { - EventArr &tArr = *reinterpret_cast(arr); - pk_arr_append_t(&tArr, {}); - bkt = &tArr[tArr.next-1]; - } - if constexpr(std::is_same::value) { - TickArr &tArr = *reinterpret_cast(arr); - pk_arr_append_t(&tArr, {}); - bkt = &tArr[tArr.next-1]; - } - assert(bkt != nullptr); - memcpy(bkt->name, safeName, 16); -} - -template<> -void Event_RegisterCallback(const char *name, EventHandler handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - pk_arr_append_t(&tBkt->callbacks, handler); -} - -template<> -void Event_UnregisterCallback(const char *name, EventHandler handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(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(const char *name) { - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - for (int64_t i = 0; i < tBkt->callbacks.next; ++i) { - tBkt->callbacks[i](); - } -} - -template<> -void Event_RegisterCallback(const char *name, TickEvent handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - pk_arr_append_t(&tBkt->callbacks, handler); -} - -template<> -void Event_UnregisterCallback(const char *name, TickEvent handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(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(const char *name, double d) { - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(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 -void Event_RegisterCallback(const char *name, Fn handler); -template -void Event_UnregisterCallback(const char *name, Fn handler); -template -void Event_Dispatch(const char *name, Arguments... args); - -template<> void Event_RegisterCallback(const char *name, EventHandler handler); -template<> void Event_UnregisterCallback(const char *name, EventHandler handler); -template<> void Event_Dispatch(const char *name); - -template<> void Event_RegisterCallback(const char *name, TickEvent handler); -template<> void Event_UnregisterCallback(const char *name, TickEvent handler); -template<> void Event_Dispatch(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(); -- cgit v1.2.3