changed keyboard customization to be similar to joystick configuration
authorHolger Schemel <info@artsoft.org>
Thu, 19 Apr 2018 18:22:14 +0000 (20:22 +0200)
committerHolger Schemel <info@artsoft.org>
Thu, 19 Apr 2018 18:22:14 +0000 (20:22 +0200)
Before, the user was asked to press the "Return" key after keyboard
customization was finished. Now, keyboard customization automatically
ends after configuring the last key, and a message is displayed that
is similar to the message displayed after joystick configuration.

src/screens.c

index 098939eb62383223979920ef043e15be49c30d07..e6397b5c6532a66e33ba9a46fde9accd84837853 100644 (file)
@@ -6444,7 +6444,7 @@ void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button)
   }
 }
 
-void CustomizeKeyboard(int player_nr)
+static boolean CustomizeKeyboardMain(int player_nr)
 {
   int i;
   int step_nr;
@@ -6463,6 +6463,7 @@ void CustomizeKeyboard(int player_nr)
     { &custom_key.snap,  "Snap Field"  },
     { &custom_key.drop,  "Drop Element"        }
   };
+  int success = FALSE;
 
   /* read existing key bindings from player setup */
   custom_key = setup.input[player_nr].key;
@@ -6496,19 +6497,14 @@ void CustomizeKeyboard(int player_nr)
          {
            Key key = GetEventKey((KeyEvent *)&event, FALSE);
 
-           if (key == KSYM_Escape || (key == KSYM_Return && step_nr == 6))
+           if (key == KSYM_Escape)
            {
-             if (key == KSYM_Escape)
-               FadeSkipNextFadeIn();
+             FadeSkipNextFadeIn();
 
              finished = TRUE;
              break;
            }
 
-           /* all keys configured -- wait for "Escape" or "Return" key */
-           if (step_nr == 6)
-             break;
-
            /* press 'Enter' to keep the existing key binding */
            if (key == KSYM_Return)
              key = *customize_step[step_nr].key;
@@ -6534,11 +6530,12 @@ void CustomizeKeyboard(int player_nr)
            DrawText(mSX, mSY + (2 + 2 * (step_nr - 1) + 1) * 32,
                     "Key:", FONT_MENU_1);
 
-           /* press 'Enter' to leave */
+           /* all keys configured */
            if (step_nr == 6)
            {
-             DrawText(mSX + 16, mSY + 15 * 32 + 16,
-                      "Press Enter", FONT_TITLE_1);
+             finished = TRUE;
+             success = TRUE;
+
              break;
            }
 
@@ -6569,6 +6566,33 @@ void CustomizeKeyboard(int player_nr)
   /* write new key bindings back to player setup */
   setup.input[player_nr].key = custom_key;
 
+  return success;
+}
+
+void CustomizeKeyboard(int player_nr)
+{
+  boolean success = CustomizeKeyboardMain(player_nr);
+
+  if (success)
+  {
+    int xpos = mSX - SX;
+    int ypos = mSY - SY;
+    unsigned int wait_frame_delay = 0;
+    unsigned int wait_frame_delay_value = 2000;
+
+    ResetDelayCounter(&wait_frame_delay);
+
+    ClearField();
+
+    DrawTextS(xpos + 16, ypos + 6 * 32, FONT_TITLE_1, "    KEYBOARD    ");
+    DrawTextS(xpos + 16, ypos + 7 * 32, FONT_TITLE_1, " IS CONFIGURED! ");
+
+    while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
+      BackToFront();
+
+    ClearEventQueue();
+  }
+
   DrawSetupScreen_Input();
 }