renamed function 'NextEvent' to 'WaitEvent'
[rocksndiamonds.git] / src / screens.c
index af53b7f83651a5d9b2b733181182a891deee6078..0a0f1f25b7a22a8092be8511a199641347d6e98c 100644 (file)
@@ -1482,6 +1482,8 @@ void DrawMainMenu()
   LoadLevel(level_nr);
   LoadScore(level_nr);
 
+  SaveLevelSetup_SeriesInfo();
+
   // set this after "ChangeViewportPropertiesIfNeeded()" (which may reset it)
   SetDrawDeactivationMask(REDRAW_NONE);
   SetDrawBackgroundMask(REDRAW_FIELD);
@@ -1785,6 +1787,8 @@ void HandleMainMenu_SelectLevel(int step, int direction, int selected_level_nr)
     LoadTape(level_nr);
     DrawCompleteVideoDisplay();
 
+    SaveLevelSetup_SeriesInfo();
+
     /* needed because DrawPreviewLevelInitial() takes some time */
     BackToFront();
     /* SyncDisplay(); */
@@ -3308,6 +3312,13 @@ void DrawInfoScreen_Version()
   DrawTextF(xstart1, ystart2, font_header, "Version");
   DrawTextF(xstart2, ystart2, font_text, getProgramVersionString());
 
+  if (!strEqual(getProgramVersionString(), getProgramRealVersionString()))
+  {
+    ystart2 += ystep;
+    DrawTextF(xstart1, ystart2, font_header, "Version (real)");
+    DrawTextF(xstart2, ystart2, font_text, getProgramRealVersionString());
+  }
+
   ystart2 += ystep;
   DrawTextF(xstart1, ystart2, font_header, "Platform");
   DrawTextF(xstart2, ystart2, font_text, PLATFORM_STRING);
@@ -5597,7 +5608,7 @@ static Key getSetupKey()
     {
       Event event;
 
-      NextEvent(&event);
+      WaitEvent(&event);
 
       switch (event.type)
       {
@@ -5631,7 +5642,9 @@ static Key getSetupKey()
 
 static int getSetupValueFont(int type, void *value)
 {
-  if (type & TYPE_KEY)
+  if (type & TYPE_GHOSTED)
+    return FONT_OPTION_OFF;
+  else if (type & TYPE_KEY)
     return (type & TYPE_QUERY ? FONT_INPUT_1_ACTIVE : FONT_VALUE_1);
   else if (type & TYPE_STRING)
     return FONT_VALUE_2;
@@ -5809,6 +5822,28 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
     ToggleFullscreenOrChangeWindowScalingIfNeeded();
 }
 
+static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig)
+{
+  static struct TokenInfo *setup_info_hide = NULL;
+  int list_size = 0;
+  int list_pos = 0;
+  int i;
+
+  /* determine maximum list size of target list */
+  while (setup_info_orig[list_size++].type != 0);
+
+  /* free, allocate and clear memory for target list */
+  checked_free(setup_info_hide);
+  setup_info_hide = checked_calloc(list_size * sizeof(struct TokenInfo));
+
+  /* copy setup info list without setup entries marked as hidden */
+  for (i = 0; setup_info_orig[i].type != 0; i++)
+    if (!hideSetupEntry(setup_info_orig[i].value))
+      setup_info_hide[list_pos++] = setup_info_orig[i];
+
+  return setup_info_hide;
+}
+
 static void DrawSetupScreen_Generic()
 {
   int fade_mask = REDRAW_FIELD;
@@ -5908,6 +5943,9 @@ static void DrawSetupScreen_Generic()
     title_string = "Setup Shortcuts";
   }
 
+  /* use modified setup info without setup entries marked as hidden */
+  setup_info = getSetupInfoFinal(setup_info);
+
   DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, title_string);
 
   // determine maximal number of setup entries that can be displayed on screen
@@ -6256,7 +6294,7 @@ void CustomizeKeyboard(int player_nr)
     {
       Event event;
 
-      NextEvent(&event);
+      WaitEvent(&event);
 
       switch (event.type)
       {