#include "files.h"
#include "init.h"
+#include "screens.h"
#include "tools.h"
#include "tape.h"
#include "config.h"
return hide_setup_token;
}
-static void setHideSetupEntry(void *setup_value_raw)
+void setHideSetupEntry(void *setup_value)
{
- /* !!! DIRTY WORKAROUND; TO BE FIXED AFTER THE MM ENGINE RELEASE !!! */
- void *setup_value = setup_value_raw - (void *)&si + (void *)&setup;
-
char *hide_setup_token = getHideSetupToken(setup_value);
if (setup_value != NULL)
setHashEntry(hide_setup_hash, hide_setup_token, "");
}
+static void setHideSetupEntryRaw(char *token_text, void *setup_value_raw)
+{
+ /* !!! DIRTY WORKAROUND; TO BE FIXED AFTER THE MM ENGINE RELEASE !!! */
+ void *setup_value = setup_value_raw - (void *)&si + (void *)&setup;
+
+ setHideSetupEntry(setup_value);
+}
+
boolean hideSetupEntry(void *setup_value)
{
char *hide_setup_token = getHideSetupToken(setup_value);
/* check if this setup option should be hidden in the setup menu */
if (token_hide_value != NULL && get_boolean_from_string(token_hide_value))
- setHideSetupEntry(token_info[token_nr].value);
+ setHideSetupEntryRaw(token_text, token_info[token_nr].value);
}
static void setSetupInfoFromTokenInfo(SetupFileHash *setup_file_hash,
for (i = 0; i < NUM_OPTIONS_SETUP_TOKENS; i++)
setSetupInfoFromTokenInfo(setup_file_hash, options_setup_tokens, i);
setup.options = soi;
+
+ setHideRelatedSetupEntries();
}
static void decodeSetupFileHash_AutoSetup(SetupFileHash *setup_file_hash)
#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 },