summaryrefslogtreecommitdiff
path: root/noncore/games/sfcave-sdl/menu.cpp
Side-by-side diff
Diffstat (limited to 'noncore/games/sfcave-sdl/menu.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/sfcave-sdl/menu.cpp43
1 files changed, 33 insertions, 10 deletions
diff --git a/noncore/games/sfcave-sdl/menu.cpp b/noncore/games/sfcave-sdl/menu.cpp
index 0a7366f..a4a4216 100644
--- a/noncore/games/sfcave-sdl/menu.cpp
+++ b/noncore/games/sfcave-sdl/menu.cpp
@@ -5,13 +5,13 @@
#include "sfcave.h"
#include "game.h"
#include "menu.h"
#include "font.h"
#include "starfield.h"
-MenuOption :: MenuOption( QString text, int id )
+MenuOption :: MenuOption( string text, int id )
{
menuText = text;
menuId = id;
nextMenu = 0;
highlighted = false;
}
@@ -112,19 +112,21 @@ Menu :: Menu( SFCave *p )
item->setNextMenu( options );
item = gameType->addMenuOption( "Back", MENU_BACK );
item->setNextMenu( options );
typeMenu->setNextMenu( gameType );
// Game Difficulty menu
+ MenuOption *customMenu = 0;
Menu *gameDifficulty = new Menu( options );
item = gameDifficulty->addMenuOption( "Easy", MENU_DIFFICULTY_EASY );
item->setNextMenu( options, false );
item = gameDifficulty->addMenuOption( "Normal", MENU_DIFFICULTY_NORMAL );
item->setNextMenu( options, false );
item = gameDifficulty->addMenuOption( "Hard", MENU_DIFFICULTY_HARD );
item->setNextMenu( options, false );
+ customMenu = gameDifficulty->addMenuOption( "Custom", MENU_DIFFICULTY_CUSTOM );
item = gameDifficulty->addMenuOption( "Back", MENU_BACK );
item->setNextMenu( options, false );
difficultyMenu->setNextMenu( gameDifficulty );
// Sounds Menu
Menu *sounds = new Menu( options );
@@ -132,12 +134,35 @@ Menu :: Menu( SFCave *p )
sounds->addMenuOption( "Sound Off", MENU_SOUND_OFF );
sounds->addMenuOption( "Music On", MENU_MUSIC_ON );
sounds->addMenuOption( "Music Off", MENU_MUSIC_OFF );
item = sounds->addMenuOption( "Back", MENU_BACK );
item->setNextMenu( options, false );
soundsMenu->setNextMenu( sounds );
+
+ // Custom Menu
+ Menu *custom = new Menu( gameDifficulty );
+ Menu *updown = new Menu( custom );
+ item = custom->addMenuOption( "Thrust", MENU_CUSTOM_THRUST );
+ item->setNextMenu( updown );
+ item = custom->addMenuOption( "Gravity", MENU_CUSTOM_GRAVITY );
+ item->setNextMenu( updown );
+ item = custom->addMenuOption( "Max Speed Up", MENU_CUSTOM_MAXSPEEDUP );
+ item->setNextMenu( updown );
+ item = custom->addMenuOption( "Max Speed Down", MENU_CUSTOM_MAXSPEEDDOWN );
+ item->setNextMenu( updown );
+ item = custom->addMenuOption( "Back", MENU_BACK );
+ item->setNextMenu( gameDifficulty, false );
+ customMenu->setNextMenu( custom );
+
+ // Up down menu
+ item = updown->addMenuOption( "Increase", MENU_CUSTOM_INCREASE );
+ item = updown->addMenuOption( "Decrease", MENU_CUSTOM_DECREASE );
+ item = updown->addMenuOption( "Save", MENU_CUSTOM_SAVE );
+ item->setNextMenu( custom, false );
+ item = updown->addMenuOption( "Cancel", MENU_CUSTOM_CANCEL );
+ item->setNextMenu( custom, false );
// Set static variables for menu selection up
mainMenu = this;
currentMenuOption = 0;
resetToTopMenu();
@@ -212,13 +237,12 @@ void Menu :: draw( SDL_Surface *screen )
int Menu :: handleKeys( SDL_KeyboardEvent &key )
{
if ( key.type != SDL_KEYDOWN )
return -1;
- statusText = "";
switch( key.keysym.sym )
{
case SDLK_DOWN:
{
// Move to next menu item
currentMenu->currentMenuOption->highlight( false );
@@ -273,50 +297,49 @@ int Menu :: handleKeys( SDL_KeyboardEvent &key )
break;
}
case SDLK_LEFT:
if ( currentMenu->parentMenu != 0 )
{
+ statusText = "";
currentMenu = currentMenu->parentMenu;
- printf( "HERE\n" );
return -1;
}
break;
case SDLK_RETURN:
case SDLK_SPACE:
{
+ statusText = "";
// select menu item
int id = currentMenu->currentMenuOption->getMenuId();
-// // if the current item has a child menu then move to that menu
+
+ // if the current item has a child menu then move to that menu
Menu *next = currentMenu->currentMenuOption->getNextMenu();
if ( next != 0 )
{
bool down = currentMenu->currentMenuOption->isDownMenuTree();
currentMenu = next;
if ( down )
initCurrentMenu();
-// return -1;
- }
-// else
- {
- return id;
}
+ return id;
+
break;
}
default:
break;
}
return -1;
}
-MenuOption *Menu :: addMenuOption( QString text, int id )
+MenuOption *Menu :: addMenuOption( string text, int id )
{
MenuOption *item = new MenuOption( text, id );
listItems.push_back( item );
return item;