49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
/******
|
|
State entry for the main menu
|
|
******/
|
|
#include "state_menu.h"
|
|
|
|
/* allocate memory for menu */
|
|
void initMenuState() {
|
|
s_menu_elements = newElementList();
|
|
s_menu_elements->user = g_screen;
|
|
|
|
struct Dimension dimen = { 32, 32, 128, 32};
|
|
struct Element *element = newElement(E_TYPE_TEXT, 0, E_STATE_NORMAL, dimen);
|
|
element->target = g_screen;
|
|
|
|
addElementToList(s_menu_elements, element);
|
|
|
|
g_renderElements(s_menu_elements); // draw all
|
|
}
|
|
|
|
/* free memory for menu */
|
|
void freeMenuState() {
|
|
freeElementList(s_menu_elements);
|
|
}
|
|
|
|
void processMenuState(int delta) {
|
|
}
|
|
|
|
/* handles events */
|
|
void handleMenuState(struct TSEvent event) {
|
|
switch(event.type) {
|
|
case TS_KEYBOARD:
|
|
handleMenuKeyInput(event.keyboard);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void handleMenuKeyInput(struct TSEvent_Keyboard key_event) {
|
|
if (key_event.key.mod & KMOD_CTRL) {
|
|
if (key_event.key.sym == 113)
|
|
g_running = 0;
|
|
}
|
|
if (key_event.key.mod & KMOD_SHIFT) {
|
|
printf("shift is held\n");
|
|
}
|
|
printf("state is %d, scan is %d, sym is %d(%c), and unicode is %d(%c)\n", key_event.state, key_event.key.scancode, key_event.key.sym, key_event.key.sym, key_event.key.unicode, key_event.key.unicode);
|
|
};
|