#include "State_Game_Menu.h" #include "State_Options.h" #include "state.h" #include "globals.h" #include "game_globals.h" char *gmenu_button_name[] = { "reload(map)", "quit(to_menu)", "return(current_game)" }; int openGameMenuState() { report(DEBUG, "GameMenuState", "opened"); last_accumulator = accumulator; int i; int offset_x = g_v_width/2 - 256; int offset_y = 128; for (i = 0; i < GMENU_BUTTON_COUNT; i++) { gmenu_button[i] = newButton(&g_large_glyphs, button_colors, gmenu_button_name[i]); gmenu_button[i]->box.x = offset_x; gmenu_button[i]->box.y = offset_y; offset_y += gmenu_button[i]->box.h + 8; } gmenu_button_a = NULL; return 0; } int closeGameMenuState() { report(DEBUG, "GameMenuState", "closed"); int i; for (i = 0; i < GMENU_BUTTON_COUNT; i++) { freeButton(gmenu_button[i]); } accumulator = last_accumulator; return 0; } int handleGameMenuState(SDL_Event event) { int i; switch(event.type) { case SDL_KEYDOWN: break; case SDL_KEYUP: if (event.key.keysym.sym == SDLK_ESCAPE) { popState(g_state_manager); } break; case SDL_MOUSEBUTTONDOWN: for (i = 0; i < GMENU_BUTTON_COUNT; i++) { if (inBox(gmenu_button[i]->box, event.motion.x, event.motion.y)) { gmenu_button_a = gmenu_button[i]; gmenu_button_a->flags |= UI_ACTIVE; break; } } break; case SDL_MOUSEBUTTONUP: if (gmenu_button_a != NULL) { if (inBox(gmenu_button_a->box, event.motion.x, event.motion.y)) { if (gmenu_button_a == gmenu_button[GMENU_BUTTON_RESTART]) { popState(g_state_manager); popState(g_state_manager); } else if (gmenu_button_a == gmenu_button[GMENU_BUTTON_QUIT]) { travel_map[0] = '\0'; popState(g_state_manager); popState(g_state_manager); } else if (gmenu_button_a == gmenu_button[GMENU_BUTTON_CANCEL]) { popState(g_state_manager); } } gmenu_button_a->flags &= ~UI_ACTIVE; gmenu_button_a = NULL; } break; } return 1; } int processGameMenuState() { return 1; } int renderGameMenuState() { SDL_Color bg = { 16, 16, 16, 233 }; renderSQuad(0, 0, g_v_width, g_v_height, bg); int i; for (i = 0; i < GMENU_BUTTON_COUNT; i++) { renderButton(gmenu_button[i]); } return 1; }