// This gets called forever by the main function int main_menu(MapPack& mappack) { int level; cerr << "Main menu. Mappack name is " << mappack.name << endl; switch (display_main_menu (mappack)) { case 0: // Play play(mappack); break; case 1: // Select Level level = select_level(mappack); if (level != -1) { mappack.set_currentlevel(level); play(mappack); } break; case 2: { // Change Map Set MapPack newmappack = select_mappack(mappack); if (&newmappack != &mappack) { // the user actually changed the mappack /* attrset(color_pair(HELPMENU)); fillsquare(LINES / 2 - 3, (COLS - 26) / 2, 7, 26); if (newmappack.name == "") { mvprintw (LINES / 2, (COLS - 16) / 2, "Invalid Map Pack"); refresh (); restms (150); getch(); } else { mvprintw (LINES / 2, (COLS - 15) / 2, "Map Pack Loaded!"); refresh (); restms (150); getch();*/ mappack = newmappack; mappack.set_currentlevel(mappack.get_currentlevel()); //mappack.dump(); //} } } break; case 3: // Instructions help_menu (); break; case 4: // Credits roll_credits (mappack); break; default: // QUIT return -1; } return 0; }
// handles in-game menu. int pause_menu(MapPack & mappack) { int pause = display_pause_menu(); switch (pause) { case 0 : case -1 : break; // Resume case 1 : // Restart mappack.set_currentlevel(mappack.get_currentlevel()); break; case 2 : { // Select level int newlvl = select_level(mappack); if (newlvl == -1) // Back to the menu (ESC key or something similar) pause_menu(mappack); else if (newlvl != mappack.get_currentlevel()) { // Change level mappack.set_currentlevel(newlvl); play(mappack); return -1; } break; } case 3 : help_menu (); break; // Help default : return -1; break; // Quit } }