- {
- /* skipping levels is only allowed when trying to skip single level */
- if (setup.skip_levels && step == 1 &&
- Request("Level still unsolved ! Skip despite handicap ?", REQ_ASK))
- {
- leveldir_current->handicap_level++;
- SaveLevelSetup_SeriesInfo();
- }
-
- new_level_nr = leveldir_current->handicap_level;
- }
-
- if (new_level_nr != old_level_nr)
- {
- struct MainControlInfo *mci= getMainControlInfo(MAIN_CONTROL_LEVEL_NUMBER);
-
- PlaySound(SND_MENU_ITEM_SELECTING);
-
- level_nr = new_level_nr;
-
-#if 1
- DrawText(mSX + mci->pos_text->x, mSY + mci->pos_text->y,
- int2str(level_nr, 3), mci->pos_text->font);
-#else
- DrawText(mSX + 11 * 32, mSY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1);
-#endif
-
- LoadLevel(level_nr);
- DrawPreviewLevel(TRUE);
-
- TapeErase();
- LoadTape(level_nr);
- DrawCompleteVideoDisplay();
-
- /* needed because DrawPreviewLevel() takes some time */
- BackToFront();
- SyncDisplay();
- }
-}
-
-#if 1
-
-void HandleMainMenu(int mx, int my, int dx, int dy, int button)
-{
- static int choice = MAIN_CONTROL_GAME;
- int pos = choice;
- int i;
-
- if (button == MB_MENU_INITIALIZE)
- {
- DrawCursorAndText_Main(choice, TRUE);
-
- return;
- }
-
- if (mx || my) /* mouse input */
- {
- pos = -1;
-
- for (i = 0; main_controls[i].nr != -1; i++)
- {
- if (insideMenuPosRect(main_controls[i].pos_button, mx - mSX, my - mSY) ||
- insideTextPosRect(main_controls[i].pos_text, mx - mSX, my - mSY) ||
- insideTextPosRect(main_controls[i].pos_input, mx - mSX, my - mSY))
- {
- pos = main_controls[i].nr;
-
- break;
- }
- }
- }
- else if (dx || dy) /* keyboard input */
- {
- if (dx > 0 && (choice == MAIN_CONTROL_INFO ||
- choice == MAIN_CONTROL_SETUP))
- button = MB_MENU_CHOICE;
- else if (dy)
- pos = choice + dy;
- }
-
- if (pos == MAIN_CONTROL_LEVELS && dx != 0 && button)
- {
- HandleMainMenu_SelectLevel(1, dx < 0 ? -1 : +1);
- }
- else if (pos >= MAIN_CONTROL_NAME && pos <= MAIN_CONTROL_QUIT)
- {
- if (button)
- {
- if (pos != choice)
- {
- PlaySound(SND_MENU_ITEM_ACTIVATING);
-
- DrawCursorAndText_Main(choice, FALSE);
- DrawCursorAndText_Main(pos, TRUE);
-
- choice = pos;
- }
- }
- else
- {
- PlaySound(SND_MENU_ITEM_SELECTING);
-
- if (pos == MAIN_CONTROL_NAME)
- {
- game_status = GAME_MODE_PSEUDO_TYPENAME;
-
- HandleTypeName(strlen(setup.player_name), 0);
- }
- else if (pos == MAIN_CONTROL_LEVELS)
- {
- if (leveldir_first)
- {
- game_status = GAME_MODE_LEVELS;
-
- SaveLevelSetup_LastSeries();
- SaveLevelSetup_SeriesInfo();
-
-#if 0
- gotoTopLevelDir();
-#endif
-
- DrawChooseLevel();
- }
- }
- else if (pos == MAIN_CONTROL_SCORES)
- {
- game_status = GAME_MODE_SCORES;
-
- DrawHallOfFame(-1);
- }
- else if (pos == MAIN_CONTROL_EDITOR)
- {
- if (leveldir_current->readonly &&
- !strEqual(setup.player_name, "Artsoft"))
- Request("This level is read only !", REQ_CONFIRM);
-
- game_status = GAME_MODE_EDITOR;
-
- DrawLevelEd();
- }
- else if (pos == MAIN_CONTROL_INFO)
- {
- game_status = GAME_MODE_INFO;
- info_mode = INFO_MODE_MAIN;
-
- DrawInfoScreen();
- }
- else if (pos == MAIN_CONTROL_GAME)
- {
- StartGameActions(options.network, setup.autorecord, NEW_RANDOMIZE);
- }
- else if (pos == MAIN_CONTROL_SETUP)
- {
- game_status = GAME_MODE_SETUP;
- setup_mode = SETUP_MODE_MAIN;
-
- DrawSetupScreen();
- }
- else if (pos == MAIN_CONTROL_QUIT)
- {
- SaveLevelSetup_LastSeries();
- SaveLevelSetup_SeriesInfo();
-
- if (Request("Do you really want to quit ?", REQ_ASK | REQ_STAY_CLOSED))
- game_status = GAME_MODE_QUIT;
- }