X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=0a0f1f25b7a22a8092be8511a199641347d6e98c;hb=88a1829af8ca41b6e581f209002022b2483b86df;hp=52ec5b4bf9e9cba80fece3d4d02e0841a57a3a27;hpb=813b68c363112696ab7a5354c665448491a7da33;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 52ec5b4b..0a0f1f25 100644 --- a/src/screens.c +++ b/src/screens.c @@ -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(); */ @@ -2138,10 +2142,6 @@ static void drawMenuInfoList(int first_entry, int num_page_entries, (value_ptr == &scaling_type_text && !video.window_scaling_available)) si->type |= TYPE_GHOSTED; - /* set some entries to "unchangeable" that should be hidden */ - if (hideSetupEntry(value_ptr)) - si->type |= TYPE_GHOSTED; - if (si->type & (TYPE_ENTER_MENU|TYPE_ENTER_LIST)) initCursor(i, IMG_MENU_BUTTON_ENTER_MENU); else if (si->type & (TYPE_LEAVE_MENU|TYPE_LEAVE_LIST)) @@ -3312,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); @@ -5601,7 +5608,7 @@ static Key getSetupKey() { Event event; - NextEvent(&event); + WaitEvent(&event); switch (event.type) { @@ -5815,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; @@ -5914,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 @@ -6262,7 +6294,7 @@ void CustomizeKeyboard(int player_nr) { Event event; - NextEvent(&event); + WaitEvent(&event); switch (event.type) {