diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-09-09 16:39:49 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-09-09 16:39:49 -0400 |
| commit | 072154de37fe9ac6e29a25dcdae3aed363198d1b (patch) | |
| tree | a735230f3c0a003ef3dbcc38d361373426863ae5 | |
| parent | f5155242a383609c4830753be537f327a547b708 (diff) | |
pke-at: add placeholder main level
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | src/main.cpp | 22 | ||||
| -rw-r--r-- | src/pke-at-settings.cpp | 4 | ||||
| -rw-r--r-- | src/pke-at-settings.hpp | 15 | ||||
| -rw-r--r-- | src/pke-at.cpp | 25 | ||||
| -rw-r--r-- | src/pke-at.hpp | 8 | ||||
| -rw-r--r-- | src/scene-main.cpp | 33 | ||||
| -rw-r--r-- | src/scene-main.hpp | 11 |
8 files changed, 120 insertions, 1 deletions
@@ -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 */ |
