added support for space key to show next generic info screen page
authorHolger Schemel <holger.schemel@virtion.de>
Tue, 5 Nov 2024 18:47:26 +0000 (19:47 +0100)
committerHolger Schemel <holger.schemel@virtion.de>
Tue, 5 Nov 2024 17:19:08 +0000 (18:19 +0100)
src/events.c
src/screens.c

index 99b55fc85824f262bc15915ce469046a5c06a88a..d4a612edec888ed38cbd955b61f16753837c9c19 100644 (file)
@@ -2467,7 +2467,7 @@ void HandleKey(Key key, int key_status)
          else if (game_status == GAME_MODE_SETUP)
            HandleSetupScreen(0, 0, 0, 0, MB_MENU_CHOICE);
          else if (game_status == GAME_MODE_INFO)
-           HandleInfoScreen(0, 0, 0, 0, MB_MENU_CHOICE);
+           HandleInfoScreen(0, 0, 0, 0, (key == KSYM_space ? MB_MENU_CONTINUE : MB_MENU_CHOICE));
          else if (game_status == GAME_MODE_SCORES)
            HandleHallOfFame(0, 0, 0, 0, MB_MENU_CHOICE);
          else if (game_status == GAME_MODE_SCOREINFO)
index 9fcd0d3aebd893ca8111d292c0a5b37ab94176e8..1a6ae83aa2e228d82b66b4d42271b2cae292497e 100644 (file)
@@ -4367,6 +4367,16 @@ void HandleInfoScreen_Generic(int mx, int my, int dx, int dy, int button)
     info_mode = INFO_MODE_MAIN;
     DrawInfoScreen();
   }
+  else if (button == MB_MENU_CONTINUE)
+  {
+    // if space key was pressed, show next page of info screen, if available
+    if (wrapped_text->line_visible_last < wrapped_text->num_lines - 1)
+      HandleInfoScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+    else
+      HandleInfoScreen(0, 0, 0, 0, MB_MENU_CHOICE);
+
+    return;
+  }
   else if ((mx >= 0 && my >= 0 && button == MB_MENU_CHOICE) || dx)
   {
     PlaySound(SND_MENU_ITEM_SELECTING);
@@ -4517,6 +4527,13 @@ boolean ShowInfoScreen_FromInitGame(void)
 
 void HandleInfoScreen(int mx, int my, int dx, int dy, int button)
 {
+  // fix "continue" button mode for screens that do not support it
+  if (button == MB_MENU_CONTINUE && (info_mode != INFO_MODE_CREDITS &&
+                                     info_mode != INFO_MODE_PROGRAM &&
+                                     info_mode != INFO_MODE_LEVELSET &&
+                                     info_mode != INFO_MODE_LEVEL))
+    button = MB_MENU_CHOICE;
+
   if (info_mode == INFO_MODE_TITLE)
     HandleInfoScreen_TitleScreen(dx, dy, button);
   else if (info_mode == INFO_MODE_ELEMENTS)