/* for input setup functions */
#define SETUPINPUT_SCREEN_POS_START 0
-#define SETUPINPUT_SCREEN_POS_END (SCR_FIELDY - 4)
-#define SETUPINPUT_SCREEN_POS_EMPTY1 (SETUPINPUT_SCREEN_POS_START + 3)
-#define SETUPINPUT_SCREEN_POS_EMPTY2 (SETUPINPUT_SCREEN_POS_END - 1)
+#define SETUPINPUT_SCREEN_POS_EMPTY1 3
+#define SETUPINPUT_SCREEN_POS_EMPTY2 12
+#define SETUPINPUT_SCREEN_POS_END 13
#define MENU_SETUP_FONT_TITLE FONT_TEXT_1
#define MENU_SETUP_FONT_TEXT FONT_TITLE_2
int ypos = MENU_SCREEN_START_YPOS + screen_pos;
int font_nr = getMenuTextFont(ti->type);
- if (token_info == setup_info_input)
+ if (setup_mode == SETUP_MODE_INPUT)
font_nr = FONT_MENU_1;
if (active)
#endif
}
-#if defined(TARGET_SDL2) && !defined(PLATFORM_ANDROID)
static void execSetupChooseWindowSize()
{
setup_mode = SETUP_MODE_CHOOSE_WINDOW_SIZE;
DrawSetupScreen();
}
-#endif
static void execSetupChooseVolumeSimple()
{
execExitSetup();
}
+static struct
+{
+ void *value;
+ void *related_value;
+} hide_related_entry_list[] =
+{
+ { &setup.game_frame_delay, execSetupChooseGameSpeed },
+ { &setup.game_frame_delay, &game_speed_text },
+
+ { &setup.scroll_delay_value, execSetupChooseScrollDelay },
+ { &setup.scroll_delay_value, &scroll_delay_text },
+
+ { &setup.engine_snapshot_mode, execSetupChooseSnapshotMode },
+ { &setup.engine_snapshot_mode, &snapshot_mode_text },
+
+ { &setup.window_scaling_percent, execSetupChooseWindowSize },
+ { &setup.window_scaling_percent, &window_size_text },
+
+ { &setup.window_scaling_quality, execSetupChooseScalingType },
+ { &setup.window_scaling_quality, &scaling_type_text },
+
+ { &setup.screen_rendering_mode, execSetupChooseRenderingMode },
+ { &setup.screen_rendering_mode, &rendering_mode_text },
+
+ { &setup.graphics_set, execSetupChooseGraphics },
+ { &setup.graphics_set, &graphics_set_name },
+
+ { &setup.sounds_set, execSetupChooseSounds },
+ { &setup.sounds_set, &sounds_set_name },
+
+ { &setup.music_set, execSetupChooseMusic },
+ { &setup.music_set, &music_set_name },
+
+ { &setup.volume_simple, execSetupChooseVolumeSimple },
+ { &setup.volume_simple, &volume_simple_text },
+
+ { &setup.volume_loops, execSetupChooseVolumeLoops },
+ { &setup.volume_loops, &volume_loops_text },
+
+ { &setup.volume_music, execSetupChooseVolumeMusic },
+ { &setup.volume_music, &volume_music_text },
+
+ { &setup.touch.control_type, execSetupChooseTouchControls },
+ { &setup.touch.control_type, &touch_controls_text },
+
+ { &setup.touch.move_distance, execSetupChooseMoveDistance },
+ { &setup.touch.move_distance, &move_distance_text },
+
+ { &setup.touch.drop_distance, execSetupChooseDropDistance },
+ { &setup.touch.drop_distance, &drop_distance_text },
+
+ { NULL, NULL }
+};
+
+void setHideRelatedSetupEntries()
+{
+ int i;
+
+ for (i = 0; hide_related_entry_list[i].value != NULL; i++)
+ if (hideSetupEntry(hide_related_entry_list[i].value))
+ setHideSetupEntry(hide_related_entry_list[i].related_value);
+}
+
static struct TokenInfo setup_info_main[] =
{
{ TYPE_ENTER_MENU, execSetupGame, STR_SETUP_GAME },
{ TYPE_SWITCH, NULL, "Player:" },
{ TYPE_SWITCH, NULL, "Device:" },
{ TYPE_SWITCH, NULL, "" },
+ { TYPE_SKIPPABLE, NULL, "" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_EMPTY, NULL, "" },
- { TYPE_EMPTY, NULL, "" },
- { TYPE_EMPTY, NULL, "" },
+ { TYPE_SKIPPABLE, NULL, "" },
{ TYPE_LEAVE_MENU, execSetupMain, "Back" },
{ 0, NULL, NULL }
static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig)
{
- static struct TokenInfo *setup_info_hide = NULL;
+ static struct TokenInfo *setup_info_final = NULL;
int list_size = 0;
int list_pos = 0;
int i;
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));
+ checked_free(setup_info_final);
+ setup_info_final = 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];
+ {
+ /* skip setup entries configured to be hidden */
+ if (hideSetupEntry(setup_info_orig[i].value))
+ continue;
+
+ /* skip skippable setup entries if screen is lower than usual */
+ if (SCR_FIELDY < SCR_FIELDY_DEFAULT &&
+ setup_info_orig[i].type == TYPE_SKIPPABLE)
+ continue;
+
+ setup_info_final[list_pos++] = setup_info_orig[i];
+ }
- return setup_info_hide;
+ return setup_info_final;
}
static void DrawSetupScreen_Generic()
ClearField();
- setup_info = setup_info_input;
+ setup_info = getSetupInfoFinal(setup_info_input);
DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, STR_SETUP_INPUT);
- for (i = 0; setup_info[i].type != 0 && i < MAX_MENU_ENTRIES_ON_SCREEN; i++)
+ for (i = 0; setup_info[i].type != 0; i++)
{
if (setup_info[i].type & (TYPE_ENTER_MENU|TYPE_ENTER_LIST))
initCursor(i, IMG_MENU_BUTTON_ENTER_MENU);
"Joystick3",
"Joystick4"
};
- int text_font_nr = (active ? FONT_MENU_1_ACTIVE : FONT_MENU_1);
+ int font_nr_menu = (active ? FONT_MENU_1_ACTIVE : FONT_MENU_1);
+ int font_nr_info = FONT_MENU_1;
+ int font_nr_name = FONT_VALUE_OLD;
+ int font_nr_on = FONT_VALUE_1;
+ int font_nr_off = FONT_VALUE_OLD;
+ int pos = 4;
+
+ if (SCR_FIELDX < SCR_FIELDX_DEFAULT)
+ {
+ font_nr_info = FONT_MENU_2;
+ font_nr_on = FONT_VALUE_NARROW;
+ font_nr_off = FONT_VALUE_OLD_NARROW;
+ }
custom_key = setup.input[player_nr].key;
int joystick_nr = getJoystickNrFromDeviceName(device_name);
boolean joystick_active = CheckJoystickOpened(joystick_nr);
char *text = joystick_name[joystick_nr];
- int font_nr = (joystick_active ? FONT_VALUE_1 : FONT_VALUE_OLD);
+ int font_nr = (joystick_active ? font_nr_on : font_nr_off);
DrawText(mSX + 8 * 32, mSY + 3 * 32, text, font_nr);
- DrawText(mSX + 32, mSY + 4 * 32, "Configure", text_font_nr);
+ DrawText(mSX + 32, mSY + 4 * 32, "Configure", font_nr_menu);
}
else
{
- DrawText(mSX + 8 * 32, mSY + 3 * 32, "Keyboard ", FONT_VALUE_1);
- DrawText(mSX + 1 * 32, mSY + 4 * 32, "Customize", text_font_nr);
+ DrawText(mSX + 8 * 32, mSY + 3 * 32, "Keyboard ", font_nr_on);
+ DrawText(mSX + 1 * 32, mSY + 4 * 32, "Customize", font_nr_menu);
}
- DrawText(mSX + 32, mSY + 5 * 32, "Actual Settings:", FONT_MENU_1);
+ if (SCR_FIELDY >= SCR_FIELDY_DEFAULT)
+ DrawText(mSX + 32, mSY + 5 * 32, "Actual Settings:", font_nr_info);
+ else
+ pos = 3;
- drawCursorXY(1, 4, IMG_MENU_BUTTON_LEFT);
- drawCursorXY(1, 5, IMG_MENU_BUTTON_RIGHT);
- drawCursorXY(1, 6, IMG_MENU_BUTTON_UP);
- drawCursorXY(1, 7, IMG_MENU_BUTTON_DOWN);
+ drawCursorXY(1, pos + 0, IMG_MENU_BUTTON_LEFT);
+ drawCursorXY(1, pos + 1, IMG_MENU_BUTTON_RIGHT);
+ drawCursorXY(1, pos + 2, IMG_MENU_BUTTON_UP);
+ drawCursorXY(1, pos + 3, IMG_MENU_BUTTON_DOWN);
- DrawText(mSX + 2 * 32, mSY + 6 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 2 * 32, mSY + 7 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 2 * 32, mSY + 8 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 2 * 32, mSY + 9 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 1 * 32, mSY + 10 * 32, "Snap Field:", FONT_VALUE_OLD);
- DrawText(mSX + 1 * 32, mSY + 12 * 32, "Drop Element:", FONT_VALUE_OLD);
+ DrawText(mSX + 2 * 32, mSY + (pos + 2) * 32, ":", font_nr_name);
+ DrawText(mSX + 2 * 32, mSY + (pos + 3) * 32, ":", font_nr_name);
+ DrawText(mSX + 2 * 32, mSY + (pos + 4) * 32, ":", font_nr_name);
+ DrawText(mSX + 2 * 32, mSY + (pos + 5) * 32, ":", font_nr_name);
+ DrawText(mSX + 1 * 32, mSY + (pos + 6) * 32, "Snap Field:", font_nr_name);
+ DrawText(mSX + 1 * 32, mSY + (pos + 8) * 32, "Drop Element:", font_nr_name);
for (i = 0; i < 6; i++)
{
- int ypos = 6 + i + (i > 3 ? i-3 : 0);
+ int ypos = (pos + 2) + i + (i > 3 ? i - 3 : 0);
DrawText(mSX + 3 * 32, mSY + ypos * 32,
- " ", FONT_VALUE_1);
+ " ", font_nr_on);
DrawText(mSX + 3 * 32, mSY + ypos * 32,
(setup.input[player_nr].use_joystick ?
custom[i].text :
- getKeyNameFromKey(*custom[i].key)), FONT_VALUE_1);
+ getKeyNameFromKey(*custom[i].key)), font_nr_on);
}
}
int pos_empty2 = SETUPINPUT_SCREEN_POS_EMPTY2;
int pos_end = SETUPINPUT_SCREEN_POS_END;
+ if (SCR_FIELDY < SCR_FIELDY_DEFAULT)
+ {
+ int i;
+
+ for (i = 0; setup_info_input[i].type != 0; i++)
+ {
+ /* adjust menu structure according to skipped setup entries */
+ if (setup_info_input[i].type == TYPE_SKIPPABLE)
+ {
+ pos_empty2--;
+ pos_end--;
+ }
+ }
+ }
+
if (button == MB_MENU_INITIALIZE)
{
+ /* input setup menu may have changed size due to graphics configuration */
+ if (choice >= pos_empty1)
+ choice = pos_end;
+
drawPlayerSetupInputInfo(input_player_nr, (choice == 2));
DrawCursorAndText_Setup(choice, -1, TRUE);
{ &custom_key.snap, "Snap Field" },
{ &custom_key.drop, "Drop Element" }
};
- int success = FALSE;
+ int font_nr_old = FONT_VALUE_OLD;
+ int font_nr_new = FONT_VALUE_1;
+ boolean success = FALSE;
+
+ if (SCR_FIELDX < SCR_FIELDX_DEFAULT)
+ {
+ font_nr_old = FONT_VALUE_OLD_NARROW;
+ font_nr_new = FONT_VALUE_NARROW;
+ }
/* read existing key bindings from player setup */
custom_key = setup.input[player_nr].key;
DrawText(mSX, mSY + (2 + 2 * step_nr + 1) * 32,
"Key:", FONT_INPUT_1_ACTIVE);
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
- getKeyNameFromKey(*customize_step[step_nr].key), FONT_VALUE_OLD);
+ getKeyNameFromKey(*customize_step[step_nr].key), font_nr_old);
FadeIn(REDRAW_FIELD);
/* got new key binding */
*customize_step[step_nr].key = key;
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
- " ", FONT_VALUE_1);
+ " ", font_nr_new);
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
- getKeyNameFromKey(key), FONT_VALUE_1);
+ getKeyNameFromKey(key), font_nr_new);
step_nr++;
/* un-highlight last query */
"Key:", FONT_INPUT_1_ACTIVE);
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
getKeyNameFromKey(*customize_step[step_nr].key),
- FONT_VALUE_OLD);
+ font_nr_old);
}
break;
controller->width, controller->height,
controller_x, controller_y);
+ SDL_SetSurfaceBlendMode(marker->surface_masked, SDL_BLENDMODE_BLEND);
SDL_SetSurfaceAlphaMod(marker->surface_masked, alpha);
BlitBitmapMasked(marker, drawto, 0, 0,
/* leave screen */
success = FALSE;
done = TRUE;
+
+ break;
}
/* undo this step */