summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-11-22 11:18:36 -0800
committerMichael Pavone <pavone@retrodev.com>2017-11-22 11:18:36 -0800
commitb21ebe75d412c72441be8a63c202641cc5ff4dfa (patch)
tree8b2aeb2b5a3a9db49c93919ea9dd443e02ff7dce
parent6895070c631340809829e0c20c085b231b0fcadd (diff)
Pause menu now triggered on ui.exit event
--HG-- branch : nuklear_ui
-rw-r--r--io.c11
-rw-r--r--nuklear_ui/blastem_nuklear.c14
-rw-r--r--nuklear_ui/blastem_nuklear.h2
3 files changed, 27 insertions, 0 deletions
diff --git a/io.c b/io.c
index 7b5d404..22881c1 100644
--- a/io.c
+++ b/io.c
@@ -23,6 +23,9 @@
#include "render.h"
#include "util.h"
#include "menu.h"
+#ifndef DISABLE_NUKLEAR
+#include "nuklear_ui/blastem_nuklear.h"
+#endif
#define CYCLE_NEVER 0xFFFFFFFF
#define MIN_POLL_INTERVAL 6840
@@ -532,6 +535,11 @@ void handle_binding_up(keybinding * binding)
break;
}
case UI_EXIT:
+#ifndef DISABLE_NUKLEAR
+ if (is_nuklear_active) {
+ show_pause_menu();
+ } else {
+#endif
current_system->request_exit(current_system);
if (current_system->type == SYSTEM_GENESIS) {
genesis_context *gen = (genesis_context *)current_system;
@@ -541,6 +549,9 @@ void handle_binding_up(keybinding * binding)
menu->external_game_load = 1;
}
}
+#ifndef DISABLE_NUKLEAR
+ }
+#endif
break;
}
break;
diff --git a/nuklear_ui/blastem_nuklear.c b/nuklear_ui/blastem_nuklear.c
index e63d9cf..2042402 100644
--- a/nuklear_ui/blastem_nuklear.c
+++ b/nuklear_ui/blastem_nuklear.c
@@ -190,6 +190,19 @@ static void context_created(void)
nk_style_set_font(context, &def_font->handle);
}
+void show_pause_menu(void)
+{
+ context->style.window.background = nk_rgba(0, 0, 0, 128);
+ context->style.window.fixed_background = nk_style_item_color(nk_rgba(0, 0, 0, 128));
+ current_view = view_pause;
+}
+
+static uint8_t active;
+uint8_t is_nuklear_active(void)
+{
+ return active;
+}
+
void blastem_nuklear_init(uint8_t file_loaded)
{
context = nk_sdl_init(render_get_window());
@@ -207,5 +220,6 @@ void blastem_nuklear_init(uint8_t file_loaded)
render_set_ui_render_fun(blastem_nuklear_render);
render_set_event_handler(handle_event);
render_set_gl_context_handlers(context_destroyed, context_created);
+ active = 1;
idle_loop();
}
diff --git a/nuklear_ui/blastem_nuklear.h b/nuklear_ui/blastem_nuklear.h
index bcdeda3..a7cf377 100644
--- a/nuklear_ui/blastem_nuklear.h
+++ b/nuklear_ui/blastem_nuklear.h
@@ -12,5 +12,7 @@
#include "nuklear_sdl_gles2.h"
void blastem_nuklear_init(uint8_t file_loaded);
+void show_pause_menu(void);
+uint8_t is_nuklear_active(void);
#endif //BLASTEM_NUKLEAR_H_