96 lines
2.4 KiB
C
96 lines
2.4 KiB
C
#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;
|
|
}
|