TYPE_BOOLEAN, CONF_VALUE_8_BIT(12),
&li.shifted_relocation, FALSE
},
+ {
+ EL_PLAYER_1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(15),
+ &li.lazy_relocation, FALSE
+ },
/* (these values are different for each player) */
{
int envelope_nr = element - EL_ENVELOPE_1;
int real_chunk_size = 2;
+ xx_envelope = level->envelope[envelope_nr]; /* copy into temporary buffer */
+
while (!checkEndOfFile(file))
{
real_chunk_size += LoadLevel_MicroChunk(file, chunk_config_NOTE,
break;
}
- level->envelope[envelope_nr] = xx_envelope;
+ level->envelope[envelope_nr] = xx_envelope; /* copy from temporary buffer */
return real_chunk_size;
}
#define SETUP_TOKEN_SCROLL_DELAY 6
#define SETUP_TOKEN_SCROLL_DELAY_VALUE 7
#define SETUP_TOKEN_ENGINE_SNAPSHOT_MODE 8
-#define SETUP_TOKEN_FADE_SCREENS 9
-#define SETUP_TOKEN_AUTORECORD 10
-#define SETUP_TOKEN_SHOW_TITLESCREEN 11
-#define SETUP_TOKEN_QUICK_DOORS 12
-#define SETUP_TOKEN_TEAM_MODE 13
-#define SETUP_TOKEN_HANDICAP 14
-#define SETUP_TOKEN_SKIP_LEVELS 15
-#define SETUP_TOKEN_TIME_LIMIT 16
-#define SETUP_TOKEN_FULLSCREEN 17
-#define SETUP_TOKEN_FULLSCREEN_MODE 18
+#define SETUP_TOKEN_ENGINE_SNAPSHOT_MEMORY 9
+#define SETUP_TOKEN_FADE_SCREENS 10
+#define SETUP_TOKEN_AUTORECORD 11
+#define SETUP_TOKEN_SHOW_TITLESCREEN 12
+#define SETUP_TOKEN_QUICK_DOORS 13
+#define SETUP_TOKEN_TEAM_MODE 14
+#define SETUP_TOKEN_HANDICAP 15
+#define SETUP_TOKEN_SKIP_LEVELS 16
+#define SETUP_TOKEN_TIME_LIMIT 17
+#define SETUP_TOKEN_FULLSCREEN 18
#define SETUP_TOKEN_WINDOW_SCALING_PERCENT 19
#define SETUP_TOKEN_WINDOW_SCALING_QUALITY 20
-#define SETUP_TOKEN_ASK_ON_ESCAPE 21
-#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR 22
-#define SETUP_TOKEN_QUICK_SWITCH 23
-#define SETUP_TOKEN_INPUT_ON_FOCUS 24
-#define SETUP_TOKEN_PREFER_AGA_GRAPHICS 25
-#define SETUP_TOKEN_GAME_FRAME_DELAY 26
-#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS 27
-#define SETUP_TOKEN_SMALL_GAME_GRAPHICS 28
-#define SETUP_TOKEN_GRAPHICS_SET 29
-#define SETUP_TOKEN_SOUNDS_SET 30
-#define SETUP_TOKEN_MUSIC_SET 31
-#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 32
-#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 33
-#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 34
-#define SETUP_TOKEN_VOLUME_SIMPLE 35
-#define SETUP_TOKEN_VOLUME_LOOPS 36
-#define SETUP_TOKEN_VOLUME_MUSIC 37
-#define SETUP_TOKEN_TOUCH_CONTROL_TYPE 38
-#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE 39
-#define SETUP_TOKEN_TOUCH_DROP_DISTANCE 40
-
-#define NUM_GLOBAL_SETUP_TOKENS 41
+#define SETUP_TOKEN_SCREEN_RENDERING_MODE 21
+#define SETUP_TOKEN_ASK_ON_ESCAPE 22
+#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR 23
+#define SETUP_TOKEN_QUICK_SWITCH 24
+#define SETUP_TOKEN_INPUT_ON_FOCUS 25
+#define SETUP_TOKEN_PREFER_AGA_GRAPHICS 26
+#define SETUP_TOKEN_GAME_FRAME_DELAY 27
+#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS 28
+#define SETUP_TOKEN_SMALL_GAME_GRAPHICS 29
+#define SETUP_TOKEN_SHOW_SNAPSHOT_BUTTONS 30
+#define SETUP_TOKEN_GRAPHICS_SET 31
+#define SETUP_TOKEN_SOUNDS_SET 32
+#define SETUP_TOKEN_MUSIC_SET 33
+#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 34
+#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 35
+#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 36
+#define SETUP_TOKEN_VOLUME_SIMPLE 37
+#define SETUP_TOKEN_VOLUME_LOOPS 38
+#define SETUP_TOKEN_VOLUME_MUSIC 39
+#define SETUP_TOKEN_TOUCH_CONTROL_TYPE 40
+#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE 41
+#define SETUP_TOKEN_TOUCH_DROP_DISTANCE 42
+
+#define NUM_GLOBAL_SETUP_TOKENS 43
/* editor setup */
#define SETUP_TOKEN_EDITOR_EL_BOULDERDASH 0
#define SETUP_TOKEN_INT_FALLBACK_MUSIC_FILE 12
#define SETUP_TOKEN_INT_DEFAULT_LEVEL_SERIES 13
#define SETUP_TOKEN_INT_CHOOSE_FROM_TOP_LEVELDIR 14
-
-#define NUM_INTERNAL_SETUP_TOKENS 15
+#define SETUP_TOKEN_INT_DEFAULT_WINDOW_WIDTH 15
+#define SETUP_TOKEN_INT_DEFAULT_WINDOW_HEIGHT 16
+
+#define NUM_INTERNAL_SETUP_TOKENS 17
+
+/* debug setup */
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_0 0
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_1 1
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_2 2
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_3 3
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_4 4
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_5 5
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_6 6
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_7 7
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_8 8
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_9 9
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_0 10
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_1 11
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_2 12
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_3 13
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_4 14
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_5 15
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_6 16
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_7 17
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_8 18
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_9 19
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_USE_MOD_KEY 20
+#define SETUP_TOKEN_DEBUG_FRAME_DELAY_GAME_ONLY 21
+
+#define NUM_DEBUG_SETUP_TOKENS 22
/* options setup */
#define SETUP_TOKEN_OPTIONS_VERBOSE 0
static struct SetupInputInfo sii;
static struct SetupSystemInfo syi;
static struct SetupInternalInfo sxi;
+static struct SetupDebugInfo sdi;
static struct OptionInfo soi;
static struct TokenInfo global_setup_tokens[] =
{ TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
{ TYPE_INTEGER,&si.scroll_delay_value, "scroll_delay_value" },
{ TYPE_STRING, &si.engine_snapshot_mode, "engine_snapshot_mode" },
+ { TYPE_INTEGER,&si.engine_snapshot_memory, "engine_snapshot_memory" },
{ TYPE_SWITCH, &si.fade_screens, "fade_screens" },
{ TYPE_SWITCH, &si.autorecord, "automatic_tape_recording"},
{ TYPE_SWITCH, &si.show_titlescreen, "show_titlescreen" },
{ TYPE_SWITCH, &si.skip_levels, "skip_levels" },
{ TYPE_SWITCH, &si.time_limit, "time_limit" },
{ TYPE_SWITCH, &si.fullscreen, "fullscreen" },
- { TYPE_STRING, &si.fullscreen_mode, "fullscreen_mode" },
{ TYPE_INTEGER,&si.window_scaling_percent, "window_scaling_percent" },
{ TYPE_STRING, &si.window_scaling_quality, "window_scaling_quality" },
+ { TYPE_STRING, &si.screen_rendering_mode, "screen_rendering_mode" },
{ TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
{ TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" },
{ TYPE_SWITCH, &si.quick_switch, "quick_player_switch" },
{ TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" },
{ TYPE_SWITCH, &si.sp_show_border_elements, "sp_show_border_elements" },
{ TYPE_SWITCH, &si.small_game_graphics, "small_game_graphics" },
+ { TYPE_SWITCH, &si.show_snapshot_buttons, "show_snapshot_buttons" },
{ TYPE_STRING, &si.graphics_set, "graphics_set" },
{ TYPE_STRING, &si.sounds_set, "sounds_set" },
{ TYPE_STRING, &si.music_set, "music_set" },
{ TYPE_STRING, &sxi.fallback_sounds_file, "fallback_sounds_file" },
{ TYPE_STRING, &sxi.fallback_music_file, "fallback_music_file" },
{ TYPE_STRING, &sxi.default_level_series, "default_level_series" },
- { TYPE_STRING, &sxi.choose_from_top_leveldir, "choose_from_top_leveldir" },
+ { TYPE_BOOLEAN,&sxi.choose_from_top_leveldir, "choose_from_top_leveldir" },
+ { TYPE_INTEGER,&sxi.default_window_width, "default_window_width" },
+ { TYPE_INTEGER,&sxi.default_window_height, "default_window_height" },
+};
+
+static struct TokenInfo debug_setup_tokens[] =
+{
+ { TYPE_INTEGER, &sdi.frame_delay[0], "debug.frame_delay_0" },
+ { TYPE_INTEGER, &sdi.frame_delay[1], "debug.frame_delay_1" },
+ { TYPE_INTEGER, &sdi.frame_delay[2], "debug.frame_delay_2" },
+ { TYPE_INTEGER, &sdi.frame_delay[3], "debug.frame_delay_3" },
+ { TYPE_INTEGER, &sdi.frame_delay[4], "debug.frame_delay_4" },
+ { TYPE_INTEGER, &sdi.frame_delay[5], "debug.frame_delay_5" },
+ { TYPE_INTEGER, &sdi.frame_delay[6], "debug.frame_delay_6" },
+ { TYPE_INTEGER, &sdi.frame_delay[7], "debug.frame_delay_7" },
+ { TYPE_INTEGER, &sdi.frame_delay[8], "debug.frame_delay_8" },
+ { TYPE_INTEGER, &sdi.frame_delay[9], "debug.frame_delay_9" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[0], "debug.key.frame_delay_0" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[1], "debug.key.frame_delay_1" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[2], "debug.key.frame_delay_2" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[3], "debug.key.frame_delay_3" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[4], "debug.key.frame_delay_4" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[5], "debug.key.frame_delay_5" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[6], "debug.key.frame_delay_6" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[7], "debug.key.frame_delay_7" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[8], "debug.key.frame_delay_8" },
+ { TYPE_KEY_X11, &sdi.frame_delay_key[9], "debug.key.frame_delay_9" },
+ { TYPE_BOOLEAN, &sdi.frame_delay_use_mod_key,"debug.frame_delay.use_mod_key"},
+ { TYPE_BOOLEAN, &sdi.frame_delay_game_only, "debug.frame_delay.game_only" },
};
static struct TokenInfo options_setup_tokens[] =
si->scroll_delay = TRUE;
si->scroll_delay_value = STD_SCROLL_DELAY;
si->engine_snapshot_mode = getStringCopy(STR_SNAPSHOT_MODE_DEFAULT);
+ si->engine_snapshot_memory = SNAPSHOT_MEMORY_DEFAULT;
si->fade_screens = TRUE;
si->autorecord = TRUE;
si->show_titlescreen = TRUE;
si->skip_levels = TRUE;
si->time_limit = TRUE;
si->fullscreen = FALSE;
- si->fullscreen_mode = getStringCopy(DEFAULT_FULLSCREEN_MODE);
si->window_scaling_percent = STD_WINDOW_SCALING_PERCENT;
si->window_scaling_quality = getStringCopy(SCALING_QUALITY_DEFAULT);
+ si->screen_rendering_mode = getStringCopy(STR_SPECIAL_RENDERING_DEFAULT);
si->ask_on_escape = TRUE;
si->ask_on_escape_editor = TRUE;
si->quick_switch = FALSE;
si->game_frame_delay = GAME_FRAME_DELAY;
si->sp_show_border_elements = FALSE;
si->small_game_graphics = FALSE;
+ si->show_snapshot_buttons = FALSE;
si->graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR);
si->sounds_set = getStringCopy(SND_CLASSIC_SUBDIR);
si->internal.default_level_series = getStringCopy(UNDEFINED_LEVELSET);
si->internal.choose_from_top_leveldir = FALSE;
+ si->internal.default_window_width = WIN_XSIZE_DEFAULT;
+ si->internal.default_window_height = WIN_YSIZE_DEFAULT;
+
+ si->debug.frame_delay[0] = DEFAULT_FRAME_DELAY_0;
+ si->debug.frame_delay[1] = DEFAULT_FRAME_DELAY_1;
+ si->debug.frame_delay[2] = DEFAULT_FRAME_DELAY_2;
+ si->debug.frame_delay[3] = DEFAULT_FRAME_DELAY_3;
+ si->debug.frame_delay[4] = DEFAULT_FRAME_DELAY_4;
+ si->debug.frame_delay[5] = DEFAULT_FRAME_DELAY_5;
+ si->debug.frame_delay[6] = DEFAULT_FRAME_DELAY_6;
+ si->debug.frame_delay[7] = DEFAULT_FRAME_DELAY_7;
+ si->debug.frame_delay[8] = DEFAULT_FRAME_DELAY_8;
+ si->debug.frame_delay[9] = DEFAULT_FRAME_DELAY_9;
+
+ si->debug.frame_delay_key[0] = DEFAULT_KEY_FRAME_DELAY_0;
+ si->debug.frame_delay_key[1] = DEFAULT_KEY_FRAME_DELAY_1;
+ si->debug.frame_delay_key[2] = DEFAULT_KEY_FRAME_DELAY_2;
+ si->debug.frame_delay_key[3] = DEFAULT_KEY_FRAME_DELAY_3;
+ si->debug.frame_delay_key[4] = DEFAULT_KEY_FRAME_DELAY_4;
+ si->debug.frame_delay_key[5] = DEFAULT_KEY_FRAME_DELAY_5;
+ si->debug.frame_delay_key[6] = DEFAULT_KEY_FRAME_DELAY_6;
+ si->debug.frame_delay_key[7] = DEFAULT_KEY_FRAME_DELAY_7;
+ si->debug.frame_delay_key[8] = DEFAULT_KEY_FRAME_DELAY_8;
+ si->debug.frame_delay_key[9] = DEFAULT_KEY_FRAME_DELAY_9;
+
+ si->debug.frame_delay_use_mod_key = DEFAULT_FRAME_DELAY_USE_MOD_KEY;
+ si->debug.frame_delay_game_only = DEFAULT_FRAME_DELAY_GAME_ONLY;
+
si->options.verbose = FALSE;
#if defined(PLATFORM_ANDROID)
getHashEntry(setup_file_hash, internal_setup_tokens[i].text));
setup.internal = sxi;
+ /* debug setup */
+ sdi = setup.debug;
+ for (i = 0; i < NUM_DEBUG_SETUP_TOKENS; i++)
+ setSetupInfo(debug_setup_tokens, i,
+ getHashEntry(setup_file_hash, debug_setup_tokens[i].text));
+ setup.debug = sdi;
+
/* options setup */
soi = setup.options;
for (i = 0; i < NUM_OPTIONS_SETUP_TOKENS; i++)
/* internal setup */
/* (internal setup values not saved to user setup file) */
+ /* debug setup */
+ sdi = setup.debug;
+ fprintf(file, "\n");
+ for (i = 0; i < NUM_DEBUG_SETUP_TOKENS; i++)
+ fprintf(file, "%s\n", getSetupLine(debug_setup_tokens, "", i));
+
/* options setup */
soi = setup.options;
fprintf(file, "\n");
/* special case: initialize "ARG_DEFAULT" values in static default config */
/* (e.g., initialize "[titlemessage].fade_mode" from "[title].fade_mode") */
+ titlescreen_initial_first_default.fade_mode =
+ title_initial_first_default.fade_mode;
+ titlescreen_initial_first_default.fade_delay =
+ title_initial_first_default.fade_delay;
+ titlescreen_initial_first_default.post_delay =
+ title_initial_first_default.post_delay;
+ titlescreen_initial_first_default.auto_delay =
+ title_initial_first_default.auto_delay;
+ titlescreen_first_default.fade_mode = title_first_default.fade_mode;
+ titlescreen_first_default.fade_delay = title_first_default.fade_delay;
+ titlescreen_first_default.post_delay = title_first_default.post_delay;
+ titlescreen_first_default.auto_delay = title_first_default.auto_delay;
+ titlemessage_initial_first_default.fade_mode =
+ title_initial_first_default.fade_mode;
+ titlemessage_initial_first_default.fade_delay =
+ title_initial_first_default.fade_delay;
+ titlemessage_initial_first_default.post_delay =
+ title_initial_first_default.post_delay;
+ titlemessage_initial_first_default.auto_delay =
+ title_initial_first_default.auto_delay;
+ titlemessage_first_default.fade_mode = title_first_default.fade_mode;
+ titlemessage_first_default.fade_delay = title_first_default.fade_delay;
+ titlemessage_first_default.post_delay = title_first_default.post_delay;
+ titlemessage_first_default.auto_delay = title_first_default.auto_delay;
+
+ titlescreen_initial_default.fade_mode = title_initial_default.fade_mode;
+ titlescreen_initial_default.fade_delay = title_initial_default.fade_delay;
+ titlescreen_initial_default.post_delay = title_initial_default.post_delay;
+ titlescreen_initial_default.auto_delay = title_initial_default.auto_delay;
+ titlescreen_default.fade_mode = title_default.fade_mode;
+ titlescreen_default.fade_delay = title_default.fade_delay;
+ titlescreen_default.post_delay = title_default.post_delay;
+ titlescreen_default.auto_delay = title_default.auto_delay;
titlemessage_initial_default.fade_mode = title_initial_default.fade_mode;
titlemessage_initial_default.fade_delay = title_initial_default.fade_delay;
titlemessage_initial_default.post_delay = title_initial_default.post_delay;
/* (e.g., init "titlemessage_1.fade_mode" from "[titlemessage].fade_mode") */
for (i = 0; i < MAX_NUM_TITLE_MESSAGES; i++)
{
+ titlescreen_initial_first[i] = titlescreen_initial_first_default;
+ titlescreen_first[i] = titlescreen_first_default;
+ titlemessage_initial_first[i] = titlemessage_initial_first_default;
+ titlemessage_first[i] = titlemessage_first_default;
+
+ titlescreen_initial[i] = titlescreen_initial_default;
+ titlescreen[i] = titlescreen_default;
titlemessage_initial[i] = titlemessage_initial_default;
titlemessage[i] = titlemessage_default;
}
/* (eg, init "menu.enter_screen.SCORES.xyz" from "menu.enter_screen.xyz") */
for (i = 0; i < NUM_SPECIAL_GFX_ARGS; i++)
{
+ if (i == GFX_SPECIAL_ARG_TITLE) /* title values already initialized */
+ continue;
+
menu.enter_screen[i] = menu.enter_screen[GFX_SPECIAL_ARG_DEFAULT];
menu.leave_screen[i] = menu.leave_screen[GFX_SPECIAL_ARG_DEFAULT];
+ menu.next_screen[i] = menu.next_screen[GFX_SPECIAL_ARG_DEFAULT];
}
/* special case: initialize "ARG_DEFAULT" values in static default config */
/* (eg, init "viewport.door_1.MAIN.xyz" from "viewport.door_1.xyz") */
for (i = 0; i < NUM_SPECIAL_GFX_ARGS; i++)
{
+ viewport.window[i] = viewport.window[GFX_SPECIAL_ARG_DEFAULT];
viewport.playfield[i] = viewport.playfield[GFX_SPECIAL_ARG_DEFAULT];
- viewport.door_1[i] = viewport.door_1[GFX_SPECIAL_ARG_DEFAULT];
- if (i != GFX_SPECIAL_ARG_EDITOR) /* editor value already initialized */
- viewport.door_2[i] = viewport.door_2[GFX_SPECIAL_ARG_DEFAULT];
+ viewport.door_1[i] = viewport.door_1[GFX_SPECIAL_ARG_DEFAULT];
+
+ if (i == GFX_SPECIAL_ARG_EDITOR) /* editor values already initialized */
+ continue;
+
+ viewport.door_2[i] = viewport.door_2[GFX_SPECIAL_ARG_DEFAULT];
}
}
static void InitMenuDesignSettings_SpecialPostProcessing()
{
+ static struct
+ {
+ struct XY *dst, *src;
+ }
+ game_buttons_xy[] =
+ {
+ { &game.button.save, &game.button.stop },
+ { &game.button.pause2, &game.button.pause },
+ { &game.button.load, &game.button.play },
+ { &game.button.undo, &game.button.stop },
+ { &game.button.redo, &game.button.play },
+
+ { NULL, NULL }
+ };
+ int i;
+
/* special case: initialize later added SETUP list size from LEVELS value */
if (menu.list_size[GAME_MODE_SETUP] == -1)
menu.list_size[GAME_MODE_SETUP] = menu.list_size[GAME_MODE_LEVELS];
+
+ /* set default position for snapshot buttons to stop/pause/play buttons */
+ for (i = 0; game_buttons_xy[i].dst != NULL; i++)
+ {
+ if ((*game_buttons_xy[i].dst).x == -1 &&
+ (*game_buttons_xy[i].dst).y == -1)
+ {
+ (*game_buttons_xy[i].dst).x = (*game_buttons_xy[i].src).x;
+ (*game_buttons_xy[i].dst).y = (*game_buttons_xy[i].src).y;
+ }
+ }
}
static void LoadMenuDesignSettingsFromFilename(char *filename)
{
+ static struct TitleFadingInfo tfi;
static struct TitleMessageInfo tmi;
+ static struct TokenInfo title_tokens[] =
+ {
+ { TYPE_INTEGER, &tfi.fade_mode, ".fade_mode" },
+ { TYPE_INTEGER, &tfi.fade_delay, ".fade_delay" },
+ { TYPE_INTEGER, &tfi.post_delay, ".post_delay" },
+ { TYPE_INTEGER, &tfi.auto_delay, ".auto_delay" },
+
+ { -1, NULL, NULL }
+ };
static struct TokenInfo titlemessage_tokens[] =
{
{ TYPE_INTEGER, &tmi.x, ".x" },
{ -1, NULL, NULL }
};
static struct
+ {
+ struct TitleFadingInfo *info;
+ char *text;
+ }
+ title_info[] =
+ {
+ /* initialize first titles from "enter screen" definitions, if defined */
+ { &title_initial_first_default, "menu.enter_screen.TITLE" },
+ { &title_first_default, "menu.enter_screen.TITLE" },
+
+ /* initialize title screens from "next screen" definitions, if defined */
+ { &title_initial_default, "menu.next_screen.TITLE" },
+ { &title_default, "menu.next_screen.TITLE" },
+
+ { NULL, NULL }
+ };
+ static struct
{
struct TitleMessageInfo *array;
char *text;
}
titlemessage_arrays[] =
{
+ /* initialize first titles from "enter screen" definitions, if defined */
+ { titlescreen_initial_first, "menu.enter_screen.TITLE" },
+ { titlescreen_first, "menu.enter_screen.TITLE" },
+ { titlemessage_initial_first, "menu.enter_screen.TITLE" },
+ { titlemessage_first, "menu.enter_screen.TITLE" },
+
+ /* initialize titles from "next screen" definitions, if defined */
+ { titlescreen_initial, "menu.next_screen.TITLE" },
+ { titlescreen, "menu.next_screen.TITLE" },
+ { titlemessage_initial, "menu.next_screen.TITLE" },
+ { titlemessage, "menu.next_screen.TITLE" },
+
+ /* overwrite titles with title definitions, if defined */
+ { titlescreen_initial_first, "[title_initial]" },
+ { titlescreen_first, "[title]" },
+ { titlemessage_initial_first, "[title_initial]" },
+ { titlemessage_first, "[title]" },
+
+ { titlescreen_initial, "[title_initial]" },
+ { titlescreen, "[title]" },
+ { titlemessage_initial, "[title_initial]" },
+ { titlemessage, "[title]" },
+
+ /* overwrite titles with title screen/message definitions, if defined */
+ { titlescreen_initial_first, "[titlescreen_initial]" },
+ { titlescreen_first, "[titlescreen]" },
+ { titlemessage_initial_first, "[titlemessage_initial]" },
+ { titlemessage_first, "[titlemessage]" },
+
+ { titlescreen_initial, "[titlescreen_initial]" },
+ { titlescreen, "[titlescreen]" },
{ titlemessage_initial, "[titlemessage_initial]" },
{ titlemessage, "[titlemessage]" },
menu.draw_xoffset_info[i] = get_integer_from_string(value_1);
if (value_2 != NULL)
menu.draw_yoffset_info[i] = get_integer_from_string(value_2);
+
+ if (i == GFX_SPECIAL_ARG_INFO_ELEMENTS)
+ {
+ char *value_1 = getHashEntry(setup_file_hash, "menu.list_size.INFO");
+
+ if (value_1 != NULL)
+ menu.list_size_info[i] = get_integer_from_string(value_1);
+ }
}
/* special case: initialize with default values that may be overwritten */
char *token_4 = "menu.leave_screen.fade_mode";
char *token_5 = "menu.leave_screen.fade_delay";
char *token_6 = "menu.leave_screen.post_delay";
+ char *token_7 = "menu.next_screen.fade_mode";
+ char *token_8 = "menu.next_screen.fade_delay";
+ char *token_9 = "menu.next_screen.post_delay";
char *value_1 = getHashEntry(setup_file_hash, token_1);
char *value_2 = getHashEntry(setup_file_hash, token_2);
char *value_3 = getHashEntry(setup_file_hash, token_3);
char *value_4 = getHashEntry(setup_file_hash, token_4);
char *value_5 = getHashEntry(setup_file_hash, token_5);
char *value_6 = getHashEntry(setup_file_hash, token_6);
+ char *value_7 = getHashEntry(setup_file_hash, token_7);
+ char *value_8 = getHashEntry(setup_file_hash, token_8);
+ char *value_9 = getHashEntry(setup_file_hash, token_9);
if (value_1 != NULL)
menu.enter_screen[i].fade_mode = get_token_parameter_value(token_1,
if (value_6 != NULL)
menu.leave_screen[i].post_delay = get_token_parameter_value(token_6,
value_6);
+ if (value_7 != NULL)
+ menu.next_screen[i].fade_mode = get_token_parameter_value(token_7,
+ value_7);
+ if (value_8 != NULL)
+ menu.next_screen[i].fade_delay = get_token_parameter_value(token_8,
+ value_8);
+ if (value_9 != NULL)
+ menu.next_screen[i].post_delay = get_token_parameter_value(token_9,
+ value_9);
}
/* special case: initialize with default values that may be overwritten */
/* (eg, init "viewport.door_1.MAIN.xyz" from "viewport.door_1.xyz") */
for (i = 0; i < NUM_SPECIAL_GFX_ARGS; i++)
{
+ char *token_w1 = "viewport.window.width";
+ char *token_w2 = "viewport.window.height";
char *token_01 = "viewport.playfield.x";
char *token_02 = "viewport.playfield.y";
char *token_03 = "viewport.playfield.width";
char *token_13 = "viewport.door_2.width";
char *token_14 = "viewport.door_2.height";
char *token_15 = "viewport.door_2.border_size";
+ char *value_w1 = getHashEntry(setup_file_hash, token_w1);
+ char *value_w2 = getHashEntry(setup_file_hash, token_w2);
char *value_01 = getHashEntry(setup_file_hash, token_01);
char *value_02 = getHashEntry(setup_file_hash, token_02);
char *value_03 = getHashEntry(setup_file_hash, token_03);
char *value_14 = getHashEntry(setup_file_hash, token_14);
char *value_15 = getHashEntry(setup_file_hash, token_15);
+ if (value_w1 != NULL)
+ viewport.window[i].width = get_token_parameter_value(token_w1, value_w1);
+ if (value_w2 != NULL)
+ viewport.window[i].height = get_token_parameter_value(token_w2, value_w2);
if (value_01 != NULL)
viewport.playfield[i].x = get_token_parameter_value(token_01, value_01);
if (value_02 != NULL)
value_15);
}
+ /* special case: initialize with default values that may be overwritten */
+ /* (e.g., init "[title].fade_mode" from "menu.next_screen.TITLE.fade_mode") */
+ for (i = 0; title_info[i].info != NULL; i++)
+ {
+ struct TitleFadingInfo *info = title_info[i].info;
+ char *base_token = title_info[i].text;
+
+ for (j = 0; title_tokens[j].type != -1; j++)
+ {
+ char *token = getStringCat2(base_token, title_tokens[j].text);
+ char *value = getHashEntry(setup_file_hash, token);
+
+ if (value != NULL)
+ {
+ int parameter_value = get_token_parameter_value(token, value);
+
+ tfi = *info;
+
+ *(int *)title_tokens[j].value = (int)parameter_value;
+
+ *info = tfi;
+ }
+
+ free(token);
+ }
+ }
+
/* special case: initialize with default values that may be overwritten */
/* (e.g., init "titlemessage_1.fade_mode" from "[titlemessage].fade_mode") */
for (i = 0; titlemessage_arrays[i].array != NULL; i++)
tmi = array[k];
if (titlemessage_tokens[j].type == TYPE_INTEGER)
- *(boolean *)titlemessage_tokens[j].value = (boolean)parameter_value;
- else
*(int *)titlemessage_tokens[j].value = (int)parameter_value;
+ else
+ *(boolean *)titlemessage_tokens[j].value = (boolean)parameter_value;
array[k] = tmi;
}