summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-05-27 10:57:57 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-05-28 16:47:25 -0400
commita8b14fba55007002d3f1a24b3bfc2d1a63c7d578 (patch)
treec37951b27a84280c057137de1a7d1d0c5951f30e
parentf924e16b7f4dad1766343383bd678e0df7271fe3 (diff)
pke: remove event templates
-rw-r--r--Makefile2
-rw-r--r--runtime/runtime.cpp1
-rw-r--r--src/event.cpp138
-rw-r--r--src/event.hpp24
-rw-r--r--src/game.cpp2
5 files changed, 0 insertions, 167 deletions
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 <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();