diff --git a/engine/breeze/game.h b/engine/breeze/game.h index 2373898..f6731a7 100644 --- a/engine/breeze/game.h +++ b/engine/breeze/game.h @@ -25,6 +25,8 @@ typedef struct BzAppDesc { extern bool bzMain(BzAppDesc *appDesc, int argc, const char **argv); +void bzGameExit(); + #ifdef BZ_ENTRYPOINT #include @@ -62,6 +64,11 @@ static void bzRaylibLogger(int msgType, const char *text, va_list args) { } static BzAppDesc appDesc = {0, 0}; +static bool running = true; + +void bzGameExit() { + running = false; +} static void bzGameLoopTick() { float dt = GetFrameTime(); @@ -124,7 +131,7 @@ int main(int argc, const char **argv) { #ifdef PLATFORM_WEB emscripten_set_main_loop(bzGameLoopTick, 0, 1); #else - while (!WindowShouldClose()) { + while (!WindowShouldClose() && running) { bzGameLoopTick(); } diff --git a/game/main.c b/game/main.c index 866f254..3b48d86 100644 --- a/game/main.c +++ b/game/main.c @@ -310,6 +310,9 @@ void imguiRender(float dt, void *userData) { if (igCollapsingHeader_TreeNodeFlags("Entities", 0)) { igSliderFloat("Frame duration", &game->frameDuration, 0.0f, 1.0f, NULL, 0); } + if (igSmallButton("Quite game")) { + bzGameExit(); + } igEnd(); }