rnd-20030830-1-src
[rocksndiamonds.git] / src / screens.c
index c3b75a318bc81cf494c839d925f33a5f5f1ad09f..0d3b008ab9f44f115c8a6bc09e9f843ad554700b 100644 (file)
@@ -472,8 +472,6 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
     }
   }
 
-  BackToFront();
-
   out:
 
   if (game_status == GAME_MODE_MAIN)
@@ -481,6 +479,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
     DrawMicroLevel(MICROLEV_XPOS, MICROLEV_YPOS, FALSE);
     DoAnimation();
   }
+
+  BackToFront();
 }
 
 
@@ -1131,10 +1131,9 @@ void HandleHelpScreen(int button)
 #else
     PlaySound_Menu_Continue(SND_BACKGROUND_INFO);
 #endif
-
-    DoAnimation();
   }
 
+  DoAnimation();
   BackToFront();
 }
 
@@ -1241,8 +1240,11 @@ static void drawChooseTreeList(int first_entry, int num_page_entries,
   int yoffset = (ti->type == TREE_TYPE_LEVEL_DIR ? 0 : yoffset_setup);
   int last_game_status = game_status;  /* save current game status */
 
+#if 1
+  DrawBackground(mSX, mSY, SXSIZE - 32 + menu.scrollbar_xoffset, SYSIZE);
+#else
   DrawBackground(SX, SY, SXSIZE - 32, SYSIZE);
-  redraw_mask |= REDRAW_FIELD;
+#endif
 
   title_string =
     (ti->type == TREE_TYPE_LEVEL_DIR ? "Level Directories" :
@@ -1278,6 +1280,8 @@ static void drawChooseTreeList(int first_entry, int num_page_entries,
   }
 
   game_status = last_game_status;      /* restore current game status */
+
+  redraw_mask |= REDRAW_FIELD;
 }
 
 static void drawChooseTreeInfo(int entry_pos, TreeInfo *ti)
@@ -1532,10 +1536,12 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
     }
   }
 
-  BackToFront();
-
+#if 0
   if (game_status == GAME_MODE_LEVELS || game_status == GAME_MODE_SETUP)
     DoAnimation();
+
+  BackToFront();
+#endif
 }
 
 void DrawChooseLevel()
@@ -1548,6 +1554,9 @@ void DrawChooseLevel()
 void HandleChooseLevel(int mx, int my, int dx, int dy, int button)
 {
   HandleChooseTree(mx, my, dx, dy, button, &leveldir_current);
+
+  DoAnimation();
+  BackToFront();
 }
 
 void DrawHallOfFame(int highlight_position)
@@ -1601,6 +1610,8 @@ static void drawHallOfFameList(int first_entry, int highlight_position)
       DrawText(mSX + dx2, sy, highscore[entry].Name, font_nr2);
     DrawText(mSX + dx3, sy, int2str(highscore[entry].Score, 5), font_nr4);
   }
+
+  redraw_mask |= REDRAW_FIELD;
 }
 
 void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
@@ -1631,8 +1642,6 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
        first_entry = 0;
 
       drawHallOfFameList(first_entry, highlight_position);
-
-      return;
     }
   }
   else if (dy > 0)
@@ -1644,27 +1653,22 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
        first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN);
 
       drawHallOfFameList(first_entry, highlight_position);
-
-      return;
     }
   }
-
-  if (button_released)
+  else if (button_released)
   {
     FadeSound(SND_BACKGROUND_SCORES);
     game_status = GAME_MODE_MAIN;
     DrawMainMenu();
   }
 
-  BackToFront();
-
-  if (game_status == GAME_MODE_SCORES)
-  {
-    DoAnimation();
 #if 1
+  if (game_status == GAME_MODE_SCORES)
     PlaySound_Menu_Continue(SND_BACKGROUND_SCORES);
 #endif
-  }
+
+  DoAnimation();
+  BackToFront();
 }
 
 
@@ -1807,6 +1811,9 @@ static struct TokenInfo setup_info_editor[] =
   { TYPE_SWITCH,       &setup.editor.el_dx_boulderdash,"DX Boulderd.:" },
   { TYPE_SWITCH,       &setup.editor.el_chars,         "Characters:"   },
   { TYPE_SWITCH,       &setup.editor.el_custom,        "Custom:"       },
+  { TYPE_SWITCH,       &setup.editor.el_custom_more,   "More Custom:"  },
+  { TYPE_EMPTY,                NULL,                   ""                      },
+  { TYPE_SWITCH,       &setup.editor.el_headlines,     "Headlines:"    },
   { TYPE_EMPTY,                NULL,                   ""                      },
   { TYPE_LEAVE_MENU,   execSetupMain,          "Back"                  },
   { 0,                 NULL,                   NULL                    }
@@ -1830,8 +1837,6 @@ static struct TokenInfo setup_info_graphics[] =
 
 static struct TokenInfo setup_info_sound[] =
 {
-  { TYPE_SWITCH,       &setup.sound,           "Sound:",               },
-  { TYPE_EMPTY,                NULL,                   ""                      },
   { TYPE_SWITCH,       &setup.sound_simple,    "Simple Sound:"         },
   { TYPE_SWITCH,       &setup.sound_loops,     "Sound Loops:"          },
   { TYPE_SWITCH,       &setup.sound_music,     "Game Music:"           },
@@ -1910,8 +1915,8 @@ static Key getSetupKey()
       }
     }
 
-    BackToFront();
     DoAnimation();
+    BackToFront();
 
     /* don't eat all CPU time */
     Delay(10);
@@ -2040,10 +2045,10 @@ static void DrawSetupScreen_Generic()
     int font_nr = FONT_MENU_1;
 
     /* set some entries to "unchangeable" according to other variables */
-    if ((value_ptr == &setup.sound       && !audio.sound_available) ||
-       (value_ptr == &setup.sound_loops && !audio.loops_available) ||
-       (value_ptr == &setup.sound_music && !audio.music_available) ||
-       (value_ptr == &setup.fullscreen  && !video.fullscreen_available))
+    if ((value_ptr == &setup.sound_simple && !audio.sound_available) ||
+       (value_ptr == &setup.sound_loops  && !audio.loops_available) ||
+       (value_ptr == &setup.sound_music  && !audio.music_available) ||
+       (value_ptr == &setup.fullscreen   && !video.fullscreen_available))
       setup_info[i].type |= TYPE_GHOSTED;
 
     if (setup_info[i].type & TYPE_STRING)
@@ -2159,10 +2164,12 @@ void HandleSetupScreen_Generic(int mx, int my, int dx, int dy, int button)
     }
   }
 
+#if 0
   BackToFront();
 
   if (game_status == GAME_MODE_SETUP)
     DoAnimation();
+#endif
 }
 
 void DrawSetupScreen_Input()
@@ -2339,7 +2346,11 @@ void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button)
     static unsigned long delay = 0;
 
     if (!DelayReached(&delay, GADGET_FRAME_DELAY))
+#if 1
+      return;
+#else
       goto out;
+#endif
 
     player_nr = (player_nr + (x == 10 ? -1 : +1) + MAX_PLAYERS) % MAX_PLAYERS;
 
@@ -2403,12 +2414,14 @@ void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button)
     }
   }
 
+#if 0
   BackToFront();
 
   out:
 
   if (game_status == GAME_MODE_SETUP)
     DoAnimation();
+#endif
 }
 
 void CustomizeKeyboard(int player_nr)
@@ -2526,8 +2539,8 @@ void CustomizeKeyboard(int player_nr)
       }
     }
 
-    BackToFront();
     DoAnimation();
+    BackToFront();
 
     /* don't eat all CPU time */
     Delay(10);
@@ -2689,8 +2702,8 @@ static boolean CalibrateJoystickMain(int player_nr)
 
     }
 
-    BackToFront();
     DoAnimation();
+    BackToFront();
 
     /* don't eat all CPU time */
     Delay(10);
@@ -2767,6 +2780,9 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
     HandleChooseTree(mx, my, dx, dy, button, &artwork.mus_current);
   else
     HandleSetupScreen_Generic(mx, my, dx, dy, button);
+
+  DoAnimation();
+  BackToFront();
 }
 
 void HandleGameActions()
@@ -2905,6 +2921,7 @@ static void CreateScreenScrollbuttons()
                      GDI_STATE, GD_BUTTON_UNPRESSED,
                      GDI_DESIGN_UNPRESSED, gd_bitmap_unpressed, gd_x1, gd_y1,
                      GDI_DESIGN_PRESSED, gd_bitmap_pressed, gd_x2, gd_y2,
+                     GDI_DIRECT_DRAW, FALSE,
                      GDI_EVENT_MASK, event_mask,
                      GDI_CALLBACK_ACTION, HandleScreenGadgets,
                      GDI_END);
@@ -2981,6 +2998,7 @@ static void CreateScreenScrollbars()
                      GDI_DESIGN_UNPRESSED, gd_bitmap_unpressed, gd_x1, gd_y1,
                      GDI_DESIGN_PRESSED, gd_bitmap_pressed, gd_x2, gd_y2,
                      GDI_BORDER_SIZE, SC_BORDER_SIZE, SC_BORDER_SIZE,
+                     GDI_DIRECT_DRAW, FALSE,
                      GDI_EVENT_MASK, event_mask,
                      GDI_CALLBACK_ACTION, HandleScreenGadgets,
                      GDI_END);