removed unused function parameter
[rocksndiamonds.git] / src / screens.c
index b45e99119d3e7c5e163fd23cfff625fd5807db70..b7ad82d4d4fcd2e8bbf7827b577d95001912a677 100644 (file)
@@ -1729,6 +1729,11 @@ void DrawMainMenu(void)
 
   if (leveldir_current != leveldir_last_valid)
   {
+    // level setup config may have been loaded to "last played" tree node copy,
+    // but "leveldir_current" now points to the "original" level set tree node,
+    // in which case "handicap_level" may still default to the first level
+    LoadLevelSetup_SeriesInfo();
+
     UpdateLastPlayedLevels_TreeInfo();
 
     levelset_has_changed = TRUE;
@@ -1872,7 +1877,7 @@ static unsigned int getAutoDelayCounter(struct TitleFadingInfo *fi)
 static boolean TitleAutoDelayReached(unsigned int *counter_var,
                                     struct TitleFadingInfo *fi)
 {
-  return DelayReachedExt(counter_var, fi->auto_delay, getAutoDelayCounter(fi));
+  return DelayReachedExt2(counter_var, fi->auto_delay, getAutoDelayCounter(fi));
 }
 
 static void ResetTitleAutoDelay(unsigned int *counter_var,
@@ -3161,13 +3166,15 @@ static void DrawInfoScreen_Elements(void)
 
 void HandleInfoScreen_Elements(int dx, int dy, int button)
 {
-  static unsigned int info_delay = 0;
+  static DelayCounter info_delay = { 0 };
   static int num_anims;
   static int num_pages;
   static int page;
   int anims_per_page = NUM_INFO_ELEMENTS_ON_SCREEN;
   int i;
 
+  info_delay.value = GameFrameDelay;
+
   if (button == MB_MENU_INITIALIZE)
   {
     boolean new_element = TRUE;
@@ -3230,7 +3237,7 @@ void HandleInfoScreen_Elements(int dx, int dy, int button)
   }
   else
   {
-    if (DelayReached(&info_delay, GameFrameDelay))
+    if (DelayReached(&info_delay))
       if (page < num_pages)
        DrawInfoScreen_HelpAnim(page * anims_per_page, num_anims, FALSE);
 
@@ -7131,7 +7138,12 @@ static void ToggleUseApiServerIfNeeded(void)
   runtime.use_api_server = setup.use_api_server;
 
   if (runtime.use_api_server)
+  {
+    if (setup.has_remaining_tapes)
+      setup.ask_for_uploading_tapes = TRUE;
+
     CheckApiServerTasks();
+  }
 }
 
 static void ModifyGameSpeedIfNeeded(void)
@@ -7670,7 +7682,7 @@ static Key getSetupKey(void)
       {
         case EVENT_KEYPRESS:
          {
-           key = GetEventKey((KeyEvent *)&event, TRUE);
+           key = GetEventKey((KeyEvent *)&event);
 
            // press 'Escape' or 'Enter' to keep the existing key binding
            if (key == KSYM_Escape || key == KSYM_Return)
@@ -8456,14 +8468,18 @@ static boolean CustomizeKeyboardMain(int player_nr)
   while (!finished)
   {
     Event event;
+    DelayCounter event_frame_delay = { GAME_FRAME_DELAY };
 
-    if (NextValidEvent(&event))
+    // reset frame delay counter directly after updating screen
+    ResetDelayCounter(&event_frame_delay);
+
+    while (NextValidEvent(&event))
     {
       switch (event.type)
       {
         case EVENT_KEYPRESS:
          {
-           Key key = GetEventKey((KeyEvent *)&event, FALSE);
+           Key key = GetEventKey((KeyEvent *)&event);
 
            // press 'Escape' to abort and keep the old key bindings
            if (key == KSYM_Escape)
@@ -8528,6 +8544,10 @@ static boolean CustomizeKeyboardMain(int player_nr)
          HandleOtherEvents(&event);
          break;
       }
+
+      // do not handle events for longer than standard frame delay period
+      if (DelayReached(&event_frame_delay))
+       break;
     }
 
     BackToFront();
@@ -8550,8 +8570,7 @@ void CustomizeKeyboard(int player_nr)
     int font_height = getFontHeight(font_nr);
     int ypos1 = SYSIZE / 2 - font_height * 2;
     int ypos2 = SYSIZE / 2 - font_height * 1;
-    unsigned int wait_frame_delay = 0;
-    unsigned int wait_frame_delay_value = 2000;
+    DelayCounter wait_frame_delay = { 2000 };
 
     ResetDelayCounter(&wait_frame_delay);
 
@@ -8560,7 +8579,7 @@ void CustomizeKeyboard(int player_nr)
     DrawTextSCentered(ypos1, font_nr, "Keyboard");
     DrawTextSCentered(ypos2, font_nr, "configured!");
 
-    while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
+    while (!DelayReached(&wait_frame_delay))
       BackToFront();
 
     ClearEventQueue();
@@ -8630,11 +8649,6 @@ static boolean ConfigureJoystickMapButtonsAndAxes(SDL_Joystick *joystick)
     { 282, 210, MARKER_AXIS_Y, "righty",       },
   };
 
-  unsigned int event_frame_delay = 0;
-  unsigned int event_frame_delay_value = GAME_FRAME_DELAY;
-
-  ResetDelayCounter(&event_frame_delay);
-
   if (!bitmaps_initialized)
   {
     controller = LoadCustomImage("joystick/controller.png");
@@ -8766,6 +8780,11 @@ static boolean ConfigureJoystickMapButtonsAndAxes(SDL_Joystick *joystick)
 
       screen_initialized = TRUE;
 
+      DelayCounter event_frame_delay = { GAME_FRAME_DELAY };
+
+      // reset frame delay counter directly after updating screen
+      ResetDelayCounter(&event_frame_delay);
+
       while (NextValidEvent(&event))
       {
        switch (event.type)
@@ -8899,7 +8918,7 @@ static boolean ConfigureJoystickMapButtonsAndAxes(SDL_Joystick *joystick)
        }
 
        // do not handle events for longer than standard frame delay period
-       if (DelayReached(&event_frame_delay, event_frame_delay_value))
+       if (DelayReached(&event_frame_delay))
          break;
       }
     }
@@ -8983,8 +9002,7 @@ void ConfigureJoystick(int player_nr)
     int font_height = getFontHeight(font_nr);
     int ypos1 = SYSIZE / 2 - font_height * 2;
     int ypos2 = SYSIZE / 2 - font_height * 1;
-    unsigned int wait_frame_delay = 0;
-    unsigned int wait_frame_delay_value = 2000;
+    DelayCounter wait_frame_delay = { 2000 };
 
     ResetDelayCounter(&wait_frame_delay);
 
@@ -8995,7 +9013,7 @@ void ConfigureJoystick(int player_nr)
     DrawTextSCentered(ypos1, font_nr, message1);
     DrawTextSCentered(ypos2, font_nr, message2);
 
-    while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
+    while (!DelayReached(&wait_frame_delay))
       BackToFront();
 
     ClearEventQueue();
@@ -9112,7 +9130,7 @@ static boolean ConfigureVirtualButtonsMain(void)
 
         case EVENT_KEYPRESS:
          {
-           Key key = GetEventKey((KeyEvent *)&event, FALSE);
+           Key key = GetEventKey((KeyEvent *)&event);
 
            action = (key == KSYM_Escape ?      ACTION_ESCAPE :
                      key == KSYM_BackSpace ||
@@ -9313,8 +9331,7 @@ void ConfigureVirtualButtons(void)
     int font_height = getFontHeight(font_nr);
     int ypos1 = SYSIZE / 2 - font_height * 2;
     int ypos2 = SYSIZE / 2 - font_height * 1;
-    unsigned int wait_frame_delay = 0;
-    unsigned int wait_frame_delay_value = 2000;
+    DelayCounter wait_frame_delay = { 2000 };
 
     ResetDelayCounter(&wait_frame_delay);
 
@@ -9323,7 +9340,7 @@ void ConfigureVirtualButtons(void)
     DrawTextSCentered(ypos1, font_nr, "Virtual buttons");
     DrawTextSCentered(ypos2, font_nr, "configured!");
 
-    while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
+    while (!DelayReached(&wait_frame_delay))
       BackToFront();
 
     ClearEventQueue();
@@ -10470,6 +10487,9 @@ static boolean OfferUploadTapes(void)
               "Upload all your tapes to the high score server now?", REQ_ASK))
     return FALSE;
 
+  // when uploading tapes, make sure that high score server is enabled
+  runtime.use_api_server = setup.use_api_server = TRUE;
+
   int num_tapes_uploaded = UploadTapes();
   char message[100];