From afc966e22a4a2f8f76fc5daa27044606f4c5bb4a Mon Sep 17 00:00:00 2001 From: Oliver Schinagl Date: Thu, 15 May 2008 14:00:20 +0000 Subject: Menu now uses message queue to process input events. --- matchblox/menu/menu.c | 37 +++++++++++++++++++++++++++++++++++-- matchblox/menu/menu.h | 21 +++++++++++---------- 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/matchblox/menu/menu.c b/matchblox/menu/menu.c index c92c2b8..8766ef8 100644 --- a/matchblox/menu/menu.c +++ b/matchblox/menu/menu.c @@ -7,9 +7,11 @@ #endif #include -#include #include -#include + + +#include "message_queue.h" +#include "message_input.h" #include "menu.h" #include "button.h" @@ -251,6 +253,37 @@ void MenuRender(void) } // MenuRender +void MenuRun(void) +{ + struct messageq_s *message; + struct input_payload_keyboard *payload; + + message = messageq_get(MESSAGE_MENU); + if (message) { + payload = message->payload; + printf("got a message! %c\n", (unsigned char)payload->key); + switch (payload->key) { + default: + case ' ': + MenuNext(); + break; + case '0': + g_pCurMenu = &g_sMenuOff; + break; + case '1': + g_pCurMenu = &g_sMenuMain; + break; + case '2': + g_pCurMenu = &g_sMenuStart; + break; + case '3': + g_pCurMenu = &g_sMenuOptions; + break; + } + } +} + + int MenuCollision(struct ButtonStruct *f_sButton, int f_iXPos, int f_iYPos) { int l_bCollision; diff --git a/matchblox/menu/menu.h b/matchblox/menu/menu.h index b5e1d9f..656d259 100644 --- a/matchblox/menu/menu.h +++ b/matchblox/menu/menu.h @@ -1,20 +1,21 @@ -#ifndef _CMENU_H -#define _CMENU_H +#ifndef _CMENU_H +#define _CMENU_H #ifdef __cplusplus extern "C" { #endif - -void MenuNext(void); -void MenuInit(int f_iWinWidth, int f_iWinHeight); -void MenuRender(void); -void MenuMouseClick(int button, int state, int x, int y); + +void MenuNext(void); +void MenuInit(int f_iWinWidth, int f_iWinHeight); +void MenuRender(void); +void MenuRun(void); +void MenuMouseClick(int button, int state, int x, int y); void MenuMouseMove(int x, int y); - + #ifdef __cplusplus } #endif - -#endif + +#endif -- cgit v0.12