From 19570b0f6a64b65c7d7f696476a8b7aed3d72f98 Mon Sep 17 00:00:00 2001 From: Allanis Date: Tue, 19 Feb 2013 23:25:15 +0000 Subject: [PATCH] [Fix] Pause is handled on opening a window, but for safety it is best to handle pause on menu open. -- Forgot the menu files too.. --- src/menu.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/menu.h | 4 ++++ 2 files changed, 66 insertions(+) create mode 100644 src/menu.c create mode 100644 src/menu.h diff --git a/src/menu.c b/src/menu.c new file mode 100644 index 0000000..3df5867 --- /dev/null +++ b/src/menu.c @@ -0,0 +1,62 @@ +#include +#include "SDL.h" + +#include "toolkit.h" +#include "log.h" +#include "main.h" +#include "pause.h" +#include "menu.h" + +#define MENU_WIDTH 120 +#define MENU_HEIGHT 200 + +#define BUTTON_WIDTH 80 +#define BUTTON_HEIGHT 30 + +static int menu_open = 0; + +static void menu_small_close(char* str); +static void edit_options(void); +static void exit_game(void); + +// Small ingame menu. +void menu_small(void) { + if(menu_open) return; // It's already open.. + + unsigned int wid; + + wid = window_create("Menu", -1, -1, MENU_WIDTH, MENU_HEIGHT); + + window_addButton(wid, 20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, + "btnExit", "Exit", (void(*)(char*))exit_game); + window_addButton(wid, 20, 20 + BUTTON_HEIGHT + 20, + BUTTON_WIDTH, BUTTON_HEIGHT, + "btnOptions", "Options", (void(*)(char*))edit_options); + window_addButton(wid, 20, 20 + BUTTON_HEIGHT*2 + 20*2, + BUTTON_WIDTH, BUTTON_HEIGHT, + "btnResume", "Resume", menu_small_close); + + pause(); + menu_open = 1; +} + +void menu_small_close(char* str) { + if(strcmp(str, "btnResume")==0) + window_destroy(window_get("Menu")); + + unpause(); + menu_open = 0; +} + +// Edit the options. +static void edit_options(void) { + // TODO +} + +// Exit the game. +static void exit_game(void) { + SDL_Event quit; + quit.type = SDL_QUIT; + SDL_PushEvent(&quit); +} + diff --git a/src/menu.h b/src/menu.h new file mode 100644 index 0000000..7e094ce --- /dev/null +++ b/src/menu.h @@ -0,0 +1,4 @@ +#pragma one + +void menu_small(void); +