summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-09-09 16:39:49 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-09-09 16:39:49 -0400
commit072154de37fe9ac6e29a25dcdae3aed363198d1b (patch)
treea735230f3c0a003ef3dbcc38d361373426863ae5
parentf5155242a383609c4830753be537f327a547b708 (diff)
pke-at: add placeholder main level
-rw-r--r--Makefile3
-rw-r--r--src/main.cpp22
-rw-r--r--src/pke-at-settings.cpp4
-rw-r--r--src/pke-at-settings.hpp15
-rw-r--r--src/pke-at.cpp25
-rw-r--r--src/pke-at.hpp8
-rw-r--r--src/scene-main.cpp33
-rw-r--r--src/scene-main.hpp11
8 files changed, 120 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 5c192f8..75bb9bd 100644
--- a/Makefile
+++ b/Makefile
@@ -42,6 +42,9 @@ obj/%.o : src/%.cpp | prepare
bin/pke-at: ## Builds the pke-at executable
bin/pke-at: obj/main.o
+bin/pke-at: obj/pke-at-settings.o
+bin/pke-at: obj/pke-at.o
+bin/pke-at: obj/scene-main.o
$(CXX) -v -std=c++23 $(BUILD_MODE_FLAGS) $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -o $@
.PHONY: clean
diff --git a/src/main.cpp b/src/main.cpp
index 2e26370..d1e16cd 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,8 +1,20 @@
#include <csignal>
-
#include <pke/pke.hpp>
+#include "pke-at-settings.hpp"
+#include "pke-at.hpp"
+#include "pke/pk.h"
+
+struct PKEPluginInterface pke_at_plugin {
+ .OnInit = pke_at_init,
+ .OnTick = pke_at_tick,
+ .OnTeardown = pke_at_teardown,
+ .OnImGuiRender = nullptr,
+ .PkeEntityInterface = nullptr,
+ .PkeEntityInterfaceCount = 0,
+};
+
void signal_handler(int signal_num) {
fprintf(stdout, "Received signal: %d - shutting down\n", signal_num);
pkeSettings.isGameRunning = false;
@@ -11,8 +23,16 @@ void signal_handler(int signal_num) {
int main(int argc, char *argv[]) {
signal(SIGTERM, signal_handler);
fprintf(stdout, "PKE_AT ENTERING\n");
+ {
+ pke_at_settings.mem.bkt = pk_mem_bucket_create("pke-at main", PK_MEM_DEFAULT_BUCKET_SIZE, PK_MEMBUCKET_FLAG_NONE);
+ pke_at_settings.mem.bkt_transient = pk_mem_bucket_create("pke-at transient", PK_MEM_DEFAULT_BUCKET_SIZE, PK_MEMBUCKET_FLAG_TRANSIENT);
+ pk_mem_bucket_set_client_mem_bucket(pke_at_settings.mem.bkt);
+ pk_arr_append_t(&LoadedPkePlugins, pke_at_plugin);
+ }
PkeArgs_Parse(argc, argv);
Game_Main({}, argv[0]);
+ pk_mem_bucket_destroy(pke_at_settings.mem.bkt_transient);
+ pk_mem_bucket_destroy(pke_at_settings.mem.bkt);
fprintf(stdout, "PKE_AT EXITING\n");
return 0;
}
diff --git a/src/pke-at-settings.cpp b/src/pke-at-settings.cpp
new file mode 100644
index 0000000..3f5c6c0
--- /dev/null
+++ b/src/pke-at-settings.cpp
@@ -0,0 +1,4 @@
+
+#include "pke-at-settings.hpp"
+
+struct pke_at_global_settings pke_at_settings{};
diff --git a/src/pke-at-settings.hpp b/src/pke-at-settings.hpp
new file mode 100644
index 0000000..1eca096
--- /dev/null
+++ b/src/pke-at-settings.hpp
@@ -0,0 +1,15 @@
+#ifndef PKE_AT_PKE_AT_SETTINGS_HPP
+#define PKE_AT_PKE_AT_SETTINGS_HPP
+
+#include "pke/pk.h"
+
+struct pke_at_global_settings {
+ struct pke_at_global_settings_mem {
+ pk_membucket *bkt;
+ pk_membucket *bkt_transient;
+ } mem;
+};
+
+extern struct pke_at_global_settings pke_at_settings;
+
+#endif /* PKE_AT_PKE_AT_SETTINGS_HPP */
diff --git a/src/pke-at.cpp b/src/pke-at.cpp
new file mode 100644
index 0000000..f62343e
--- /dev/null
+++ b/src/pke-at.cpp
@@ -0,0 +1,25 @@
+
+#include <pke/pke.hpp>
+
+#include "pke-at.hpp"
+#include "pke/level.hpp"
+#include "scene-main.hpp"
+
+struct pke_at_master {
+ struct pke_at_master_states {
+ } states;
+} mstr;
+
+void pke_at_tick(double delta) {
+ (void)delta;
+}
+
+void pke_at_init() {
+ pkeSettings.rt.nextLevel = pke_at_level_main_create();
+}
+
+void pke_at_teardown() {
+ if (pkeSettings.rt.activeLevel != nullptr) {
+ pke_level_teardown(pkeSettings.rt.activeLevel);
+ }
+}
diff --git a/src/pke-at.hpp b/src/pke-at.hpp
new file mode 100644
index 0000000..39ad7f6
--- /dev/null
+++ b/src/pke-at.hpp
@@ -0,0 +1,8 @@
+#ifndef PKE_AT_PKE_AT_HPP
+#define PKE_AT_PKE_AT_HPP
+
+void pke_at_init();
+void pke_at_tick(double delta);
+void pke_at_teardown();
+
+#endif /* PKE_AT_PKE_AT_HPP */
diff --git a/src/scene-main.cpp b/src/scene-main.cpp
new file mode 100644
index 0000000..3e75b7c
--- /dev/null
+++ b/src/scene-main.cpp
@@ -0,0 +1,33 @@
+
+#include "scene-main.hpp"
+
+#include "pke/level.hpp"
+
+struct pke_scene_main_master {
+ pke_level *level;
+} main_mstr;
+
+pke_level *pke_at_level_main_create() {
+ main_mstr.level = pke_level_create("main", pk_uuid_zed, pk_uuid_zed);
+ main_mstr.level->pke_cb_spinup.func = pke_at_level_main_init;
+ main_mstr.level->pke_cb_tick.func = (void(*)())pke_at_level_main_tick;
+ main_mstr.level->pke_cb_teardown.func = pke_at_level_main_teardown;
+ return main_mstr.level;
+}
+
+void pke_at_level_main_init() {
+ pke_ui_box *hello_world = pke_ui_box_new_root();
+ hello_world->flags |= PKE_UI_BOX_FLAG_POSITION_TYPE_DYNAMIC;
+ hello_world->flags |= PKE_UI_BOX_FLAG_CENTER_BOTH;
+ hello_world->min_size = glm::vec2(0.9);
+ hello_world->max_size = glm::vec2(0.9);
+ pke_level_register_root_ui_box(main_mstr.level, hello_world);
+}
+
+void pke_at_level_main_tick(double delta) {
+ (void)delta;
+}
+
+void pke_at_level_main_teardown() {
+ main_mstr.level = nullptr;
+}
diff --git a/src/scene-main.hpp b/src/scene-main.hpp
new file mode 100644
index 0000000..1fbabff
--- /dev/null
+++ b/src/scene-main.hpp
@@ -0,0 +1,11 @@
+#ifndef PKE_AT_SCENE_MAIN_HPP
+#define PKE_AT_SCENE_MAIN_HPP
+
+#include "pke/level-types.hpp"
+
+pke_level *pke_at_level_main_create();
+void pke_at_level_main_init();
+void pke_at_level_main_tick(double delta);
+void pke_at_level_main_teardown();
+
+#endif /* PKE_AT_SCENE_MAIN_HPP */