int selectMenu(char * passwordPointer,char reservedWords[][16],char savedPasswords[][16]) { int keyPressed; int selectedMenuItem = 0; printMenuItems(selectedMenuItem, passwordPointer, reservedWords, savedPasswords); // menu view do { keyPressed = _getch(); switch (keyPressed) { case UPARROW: selectedMenuItem--; if(selectedMenuItem<0) { selectedMenuItem = LASTMENUITEM; } break; case DOWNARROW: selectedMenuItem++; if(selectedMenuItem>LASTMENUITEM) { selectedMenuItem = 0; } break; } printMenuItems(selectedMenuItem, passwordPointer, reservedWords, savedPasswords); } while (keyPressed!=ENTER); return selectedMenuItem; }
bool showMenu() { static int menu_pos_idx = 0; struct menu_list menu[] = { {"NEW GAME", 360, 40}, /* [x,y] coordinates */ {"HIGH SCORES", 380, 50}, {"QUIT", 400, 60}, }; enum { NEWGAME, HIGHSCORE, QUIT }; // Show BG TextureDraw(&menu_bg, 0, 0); // manage cursor: it can only move if the timer is over if (gameDelays.input_wait == 0) { if (IsPadPress(Pad1Down)) { gameDelays.input_wait = INPUT_LAG; if (menu_pos_idx < 3) { menu_pos_idx++; } } if (IsPadPress(Pad1Up)) { gameDelays.input_wait = INPUT_LAG; if (menu_pos_idx > 0) { menu_pos_idx--; } } if (IsPadPress(Pad1Cross)) { gameDelays.waiting_screen = WAITING_SCREEN; switch(menu_pos_idx) { case NEWGAME: { setGameStatus(GAME_PLAYING); }; break; // TODO case HIGHSCORE: case QUIT: break; } } } printMenuItems(menu, menu_pos_idx); return true; }
void printSubMenuItems(int selectedItem, int selectedSubmenuItem) { int subMX = 15, subMY = 3, arrX = 12; printMenuItems(selectedItem); switch (selectedItem) { //file menu case 0: { // selecting an element in menu list int itemsSelection[FILEBACKBTN+1] = {2,2,2,2,2}; itemsSelection[selectedSubmenuItem] = 1; setCursorPosition(arrX,subMY); printColouredText("=>",2); setCursorPosition(subMX,subMY); printColouredText(" Load ",itemsSelection[0]); setCursorPosition(subMX,++subMY); printColouredText(" Save ", itemsSelection[1]); setCursorPosition(subMX,++subMY); printColouredText(" Save As ",itemsSelection[2]); setCursorPosition(subMX,++subMY); printColouredText(" Save Encrypted ",itemsSelection[3]); setCursorPosition(subMX,++subMY); printColouredText(" Back ",itemsSelection[4]); break; } //edit menu case 1: { // selecting an element in menu list int itemsSelection[EDITBACKBTN+1] = {2,2,2,2}; itemsSelection[selectedSubmenuItem] = 1; setCursorPosition(arrX,++subMY); printColouredText("=>",2); setCursorPosition(subMX,subMY); printColouredText(" Add ",itemsSelection[0]); setCursorPosition(subMX,++subMY); printColouredText(" Edit ", itemsSelection[1]); setCursorPosition(subMX,++subMY); printColouredText(" Remove ",itemsSelection[2]); setCursorPosition(subMX,++subMY); printColouredText(" Back ",itemsSelection[3]); break; } //view menu case 2: { // selecting an element in menu list int itemsSelection[VIEWBACKBTN+1] = {2,2,2,2}; itemsSelection[selectedSubmenuItem] = 1; setCursorPosition(arrX,(subMY+=2)); printColouredText("=>",2); setCursorPosition(subMX,subMY); printColouredText(" Print ",itemsSelection[0]); setCursorPosition(subMX,++subMY); printColouredText(" Sort ", itemsSelection[1]); setCursorPosition(subMX,++subMY); printColouredText(" Search ",itemsSelection[2]); setCursorPosition(subMX,++subMY); printColouredText(" Back ",itemsSelection[3]); break; } } }