summaryrefslogtreecommitdiffstats
path: root/matchblox/menu
diff options
context:
space:
mode:
Diffstat (limited to 'matchblox/menu')
-rw-r--r--matchblox/menu/menu.c38
-rw-r--r--matchblox/menu/menu.h2
-rw-r--r--matchblox/menu/menu_msg.c20
-rw-r--r--matchblox/menu/menu_msg.h10
4 files changed, 54 insertions, 16 deletions
diff --git a/matchblox/menu/menu.c b/matchblox/menu/menu.c
index a4a31c1..57dd8c0 100644
--- a/matchblox/menu/menu.c
+++ b/matchblox/menu/menu.c
@@ -156,23 +156,29 @@ void MenuBuild (void)
break;
case MENU_START:
- MenuAddLabel(50, 50, "Headtracking");
- MenuAddButton(150, 100, 64, 64, "On", BUTTON_RADIO, BUTTON_GROUP1, MenuEnableHT);
- MenuAddButton(350, 100, 64, 64, "Off", BUTTON_RADIO, BUTTON_GROUP1, MenuDisableHT);
+ MenuAddLabel(50, 30, "Headtracking");
+ MenuAddButton(150, 80, 64, 64, "On", BUTTON_RADIO, BUTTON_GROUP1, MenuEnableHT);
+ MenuAddButton(350, 80, 64, 64, "Off", BUTTON_RADIO, BUTTON_GROUP1, MenuDisableHT);
MenuEnableGroup(BUTTON_GROUP1);
MenuAddLabel(50, 150, "Stereo vision");
- MenuAddButton(150, 200, 64, 64, "On", BUTTON_RADIO, BUTTON_GROUP2, MenuEnableSV);
- MenuAddButton(350, 200, 64, 64, "Off", BUTTON_RADIO, BUTTON_GROUP2, MenuDisableSV);
+ MenuAddButton(150, 200, 64, 64, "On", BUTTON_RADIO, BUTTON_GROUP2, MenuEnableSV);
+ MenuAddButton(350, 200, 64, 64, "Off", BUTTON_RADIO, BUTTON_GROUP2, MenuDisableSV);
MenuEnableGroup(BUTTON_GROUP2);
+ MenuAddLabel(50, 270, "Box size");
+ MenuAddButton(30, 320, 64, 64, "Small", BUTTON_RADIO, BUTTON_GROUP3, MenuSetBoxSmall);
+ MenuAddButton(220, 320, 64, 64, "Medium", BUTTON_RADIO, BUTTON_GROUP3, MenuSetBoxMedium);
+ MenuAddButton(440, 320, 64, 64, "Large", BUTTON_RADIO, BUTTON_GROUP3, MenuSetBoxLarge);
+ MenuEnableGroup(BUTTON_GROUP3);
+
MenuAddButton(50, 400, 256, 64, "Back", BUTTON_CLICK, BUTTON_NO_GROUP, MenuPrev);
MenuAddButton(350, 400, 256, 64, "Next", BUTTON_CLICK, BUTTON_NO_GROUP, MenuPostMessageStart);
break;
case MENU_OPTIONS:
- MenuAddButton(200, 150, 250, 64, "Abort", BUTTON_CLICK, BUTTON_NO_GROUP, MenuPostMessageAbort);
- MenuAddButton(200, 250, 250, 64, "Recalibrate", BUTTON_CLICK, BUTTON_NO_GROUP, MenuPostMessageAbort);
+ MenuAddButton(150, 150, 400, 80, "Abort", BUTTON_CLICK, BUTTON_NO_GROUP, MenuPostMessageAbort);
+ MenuAddButton(150, 250, 400, 80, "Recalibrate", BUTTON_CLICK, BUTTON_NO_GROUP, MenuPostMessageRecalibrate);
MenuEnableGroup(BUTTON_GROUP1);
break;
}
@@ -328,6 +334,10 @@ void MenuProcessMessage(void)
{
MenuMouseClick(GLUT_LEFT_BUTTON, GLUT_UP, l_iXPos, l_iYPos);
}
+ else if (l_pMsg->btns & WIIMOTE_BUTTON_PLUS)
+ {
+ MenuPostMessagePause();
+ }
else
{
MenuMouseMove(l_iXPos, l_iYPos);
@@ -454,4 +464,16 @@ void MenuOff(void)
{
g_pCurMenu = &g_sMenuOff;
-} // MenuOff \ No newline at end of file
+} // MenuOff
+
+void MenuStart(void)
+{
+ g_pCurMenu = &g_sMenuStart;
+
+} // MenuStart
+
+void MenuOptions(void)
+{
+ g_pCurMenu = &g_sMenuOptions;
+
+} // MenuOptions \ No newline at end of file
diff --git a/matchblox/menu/menu.h b/matchblox/menu/menu.h
index b21e50f..1bef444 100644
--- a/matchblox/menu/menu.h
+++ b/matchblox/menu/menu.h
@@ -14,6 +14,8 @@ void MenuMouseClick(int button, int state, int x, int y);
void MenuMouseMove(int x, int y);
void MenuOff(void);
+void MenuStart(void);
+void MenuOptions(void);
#ifdef __cplusplus
}
diff --git a/matchblox/menu/menu_msg.c b/matchblox/menu/menu_msg.c
index 3b6f4de..3775eaa 100644
--- a/matchblox/menu/menu_msg.c
+++ b/matchblox/menu/menu_msg.c
@@ -1,5 +1,4 @@
#include "message_queue.h"
-#include "message_input.h"
#include "menu_msg.h"
#include "menu.h"
@@ -61,11 +60,24 @@ void MenuPostMessageAbort(void)
payload.action = ACTION_ABORT;
payload.gamemode = 0;
+ MenuStart();
MenuPostMessage(payload);
} // MenuPostMessageAbort
+void MenuPostMessageRecalibrate(void)
+{
+ struct menu_payload payload;
+
+ payload.action = ACTION_RECALIBRATE;
+ payload.gamemode = 0;
+ MenuStart();
+
+ MenuPostMessage(payload);
+
+} // MenuPostMessageRecalibrate
+
// setter voor game options
void MenuEnableHT(void) { g_iGameMode |= GO_HEADTRACKING; }
void MenuDisableHT(void) { g_iGameMode &= ~GO_HEADTRACKING; }
@@ -73,6 +85,6 @@ void MenuEnableSV(void) { g_iGameMode |= GO_STEREOVISION; }
void MenuDisableSV(void) { g_iGameMode &= ~GO_STEREOVISION; }
void MenuEnableShadow(void) { g_iGameMode |= GO_SHADOW; }
void MenuDisableShadow(void) { g_iGameMode &= ~GO_SHADOW; }
-void MenuSetBoxSmall(void) { g_iGameMode = (g_iGameMode & 8) | 0 << 3; } // 0 << 3 == 0
-void MenuSetBoxMedium(void) { g_iGameMode = (g_iGameMode & 8) | 1 << 3; } // 1 << 3 == 8
-void MenuSetBoxLarge(void) { g_iGameMode = (g_iGameMode & 8) | 2 << 3; } // 2 << 3 == 16 \ No newline at end of file
+void MenuSetBoxSmall(void) { g_iGameMode = (g_iGameMode & 7) | 0 << 3; } // 0 << 3 == 0
+void MenuSetBoxMedium(void) { g_iGameMode = (g_iGameMode & 7) | 1 << 3; } // 1 << 3 == 8
+void MenuSetBoxLarge(void) { g_iGameMode = (g_iGameMode & 7) | 2 << 3; } // 2 << 3 == 16 \ No newline at end of file
diff --git a/matchblox/menu/menu_msg.h b/matchblox/menu/menu_msg.h
index 9f6dc38..f188b73 100644
--- a/matchblox/menu/menu_msg.h
+++ b/matchblox/menu/menu_msg.h
@@ -9,10 +9,11 @@ struct menu_payload
enum game_actions
{
- ACTION_START = 1,
- ACTION_ABORT = 2,
- ACTION_PAUSE = 4,
- ACTION_RESUME = 8
+ ACTION_START = 1,
+ ACTION_ABORT = 2,
+ ACTION_PAUSE = 4,
+ ACTION_RESUME = 8,
+ ACTION_RECALIBRATE = 16
};
typedef enum GameOption
@@ -26,6 +27,7 @@ void MenuPostMessagePause(void);
void MenuPostMessageResume(void);
void MenuPostMessageStart(void);
void MenuPostMessageAbort(void);
+void MenuPostMessageRecalibrate(void);
void MenuEnableHT(void);
void MenuDisableHT(void);