rnd-19981215-1
[rocksndiamonds.git] / src / screens.c
index adbda0da2bd2ee927b9dd54fc5f3d26353361997..fbdc116c0787f30b8654f222c190e856bbd91875 100644 (file)
@@ -58,6 +58,17 @@ void DrawMainMenu()
   int i;
   char *name_text = (!options.network && setup.team_mode ? "Team:" : "Name:");
 
+  /* needed if last screen was the playing screen, invoked from level editor */
+  if (level_editor_test_game)
+  {
+    game_status = LEVELED;
+    DrawLevelEd();
+    return;
+  }
+
+  /* needed if last screen was the level editor */
+  UnmapLevelEditorControlButtons();
+
   FadeSounds();
   GetPlayerConfig();
   LoadLevel(level_nr);
@@ -804,6 +815,7 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button)
   static unsigned long choose_delay = 0;
   static int redraw = TRUE;
   int x = (mx + 32 - SX) / 32, y = (my + 32 - SY) / 32;
+  int step = (button == 1 ? 1 : button == 2 ? 5 : 10);
   int num_page_entries;
 
   if (num_leveldirs <= MAX_LEVEL_SERIES_ON_SCREEN)
@@ -851,7 +863,13 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button)
     if (first_entry > 0 &&
        (dy || DelayReached(&choose_delay, 150)))
     {
+#if 0
       first_entry--;
+#else
+      first_entry -= step;
+      if (first_entry < 0)
+       first_entry = 0;
+#endif
       drawChooseLevelList(first_entry, num_page_entries);
       drawChooseLevelInfo(first_entry);
       DrawGraphic(0, choice - 1, GFX_KUGEL_ROT);
@@ -863,7 +881,13 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button)
     if (first_entry + num_page_entries < num_leveldirs &&
        (dy || DelayReached(&choose_delay, 150)))
     {
+#if 0
       first_entry++;
+#else
+      first_entry += step;
+      if (first_entry + num_page_entries > num_leveldirs)
+       first_entry = num_leveldirs - num_page_entries;
+#endif
       drawChooseLevelList(first_entry, num_page_entries);
       drawChooseLevelInfo(first_entry + num_page_entries - 1);
       DrawGraphic(0, choice - 1, GFX_KUGEL_ROT);
@@ -1120,12 +1144,18 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
       }
       else if (y==7)
       {
+#if 0
        if (setup.double_buffering)
          DrawText(SX+14*32, SY+yy*32,"off",FS_BIG,FC_BLUE);
        else
          DrawText(SX+14*32, SY+yy*32,"on ",FS_BIG,FC_YELLOW);
        setup.double_buffering = !setup.double_buffering;
        setup.direct_draw = !setup.double_buffering;
+#else
+       DrawText(SX+14*32, SY+yy*32,"on ",FS_BIG,FC_YELLOW);
+       setup.double_buffering = TRUE;
+       setup.direct_draw = !setup.double_buffering;
+#endif
       }
       else if (y==8)
       {