- if (num_page_entries > NUM_MENU_ENTRIES_ON_SCREEN)
- num_page_entries = NUM_MENU_ENTRIES_ON_SCREEN;
-
- if (num_page_entries > max_setup_info)
- num_page_entries = max_setup_info;
-
- if (first_entry + num_page_entries > max_setup_info)
- first_entry = 0;
-
- /* clear tree list area, but not title or scrollbar */
- DrawBackground(mSX, mSY + MENU_SCREEN_START_YPOS * 32,
- SC_SCROLLBAR_XPOS + menu.scrollbar_xoffset,
- NUM_MENU_ENTRIES_ON_SCREEN * 32);
-
- for (i = 0; i < num_page_entries; i++)
- {
- int setup_info_pos = first_entry + i;
- struct TokenInfo *si = &setup_info[setup_info_pos];
- void *value_ptr = si->value;
-
- /* set some entries to "unchangeable" according to other variables */
- if ((value_ptr == &setup.sound_simple && !audio.sound_available) ||
- (value_ptr == &setup.sound_loops && !audio.loops_available) ||
- (value_ptr == &setup.sound_music && !audio.music_available) ||
- (value_ptr == &setup.fullscreen && !video.fullscreen_available) ||
- (value_ptr == &screen_mode_text && !video.fullscreen_available) ||
- (value_ptr == &window_size_text && !video.window_scaling_available) ||
- (value_ptr == &scaling_type_text && !video.window_scaling_available))
- 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))
- initCursor(i, IMG_MENU_BUTTON_LEAVE_MENU);
- else if (si->type & ~TYPE_SKIP_ENTRY)
- initCursor(i, IMG_MENU_BUTTON);
-
- DrawCursorAndText_Setup(i, setup_info_pos, FALSE);
-
- if (si->type & TYPE_VALUE)
- drawSetupValue(i, setup_info_pos);
- }
-}
-
-static void DrawSetupScreen_Generic()
-{
- boolean redraw_all = FALSE;
- char *title_string = NULL;
- int i;
-
- UnmapAllGadgets();
-
- FreeScreenGadgets();
- CreateScreenGadgets();
-
- CloseDoor(DOOR_CLOSE_2);
-
- if (redraw_mask & REDRAW_ALL)
- redraw_all = TRUE;
-
- FadeOut(REDRAW_FIELD);
-
- ClearField();
-
- if (setup_mode == SETUP_MODE_MAIN)
- {
- setup_info = setup_info_main;
- title_string = "Setup";
- }
- else if (setup_mode == SETUP_MODE_GAME)
- {
- setup_info = setup_info_game;
- title_string = "Setup Game";
- }
- else if (setup_mode == SETUP_MODE_EDITOR)
- {
- setup_info = setup_info_editor;
- title_string = "Setup Editor";
- }
- else if (setup_mode == SETUP_MODE_GRAPHICS)
- {
- setup_info = setup_info_graphics;
- title_string = "Setup Graphics";
- }
- else if (setup_mode == SETUP_MODE_SOUND)
- {
- setup_info = setup_info_sound;
- title_string = "Setup Sound";
- }
- else if (setup_mode == SETUP_MODE_ARTWORK)
- {
- setup_info = setup_info_artwork;
- title_string = "Custom Artwork";
- }
- else if (setup_mode == SETUP_MODE_TOUCH)
- {
- setup_info = setup_info_touch;
- title_string = "Setup Touch Ctrls";
- }
- else if (setup_mode == SETUP_MODE_SHORTCUTS)
- {
- setup_info = setup_info_shortcuts;
- title_string = "Setup Shortcuts";
- }
- else if (setup_mode == SETUP_MODE_SHORTCUTS_1)
- {
- setup_info = setup_info_shortcuts_1;
- title_string = "Setup Shortcuts";
- }
- else if (setup_mode == SETUP_MODE_SHORTCUTS_2)
- {
- setup_info = setup_info_shortcuts_2;
- title_string = "Setup Shortcuts";
- }
- else if (setup_mode == SETUP_MODE_SHORTCUTS_3)
- {
- setup_info = setup_info_shortcuts_3;
- title_string = "Setup Shortcuts";
- }
- else if (setup_mode == SETUP_MODE_SHORTCUTS_4)
- {
- setup_info = setup_info_shortcuts_4;
- title_string = "Setup Shortcuts";
- }
- else if (setup_mode == SETUP_MODE_SHORTCUTS_5)
- {
- setup_info = setup_info_shortcuts_5;
- title_string = "Setup Shortcuts";
- }
-
- DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, title_string);
-
- // determine maximal number of setup entries that can be displayed on screen
- num_setup_info = 0;
- for (i = 0; setup_info[i].type != 0 && i < NUM_MENU_ENTRIES_ON_SCREEN; i++)
- num_setup_info++;
-
- // determine maximal number of setup entries available for this setup screen
- max_setup_info = 0;
- for (i = 0; setup_info[i].type != 0; i++)
- max_setup_info++;
-
- HandleSetupScreen_Generic(0, 0, 0, 0, MB_MENU_INITIALIZE);
-
- MapScreenGadgets(max_setup_info);