X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=ed5274695887f47821a88e08af6ab9366d579cdf;hp=d428ae99ef19ae1b39c96a97c0eea46a41395089;hb=12d5d704d201d4df017290bfee65145e51cdf97a;hpb=ec5b593331609b38b793231e43b0bf57ce309eb2 diff --git a/src/files.c b/src/files.c index d428ae99..ed527469 100644 --- a/src/files.c +++ b/src/files.c @@ -7900,41 +7900,42 @@ void SaveScore(int nr) #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_SHOW_SNAPSHOT_BUTTONS 29 -#define SETUP_TOKEN_GRAPHICS_SET 30 -#define SETUP_TOKEN_SOUNDS_SET 31 -#define SETUP_TOKEN_MUSIC_SET 32 -#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 33 -#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 34 -#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 35 -#define SETUP_TOKEN_VOLUME_SIMPLE 36 -#define SETUP_TOKEN_VOLUME_LOOPS 37 -#define SETUP_TOKEN_VOLUME_MUSIC 38 -#define SETUP_TOKEN_TOUCH_CONTROL_TYPE 39 -#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE 40 -#define SETUP_TOKEN_TOUCH_DROP_DISTANCE 41 - -#define NUM_GLOBAL_SETUP_TOKENS 42 +#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 @@ -8049,6 +8050,32 @@ void SaveScore(int nr) #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 @@ -8062,6 +8089,7 @@ static struct SetupShortcutInfo ssi; 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[] = @@ -8075,6 +8103,7 @@ 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" }, @@ -8084,9 +8113,9 @@ static struct TokenInfo global_setup_tokens[] = { 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" }, @@ -8223,6 +8252,32 @@ static struct TokenInfo internal_setup_tokens[] = { 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[] = { { TYPE_BOOLEAN, &soi.verbose, "options.verbose" }, @@ -8257,6 +8312,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) 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; @@ -8266,9 +8322,9 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) 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; @@ -8386,6 +8442,31 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) 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) @@ -8474,6 +8555,13 @@ static void decodeSetupFileHash(SetupFileHash *setup_file_hash) 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++) @@ -8640,6 +8728,12 @@ void SaveSetup() /* 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"); @@ -8764,6 +8858,31 @@ static void InitMenuDesignSettings_SpecialPreProcessing() /* 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; @@ -8785,6 +8904,11 @@ static void InitMenuDesignSettings_SpecialPreProcessing() /* (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; @@ -8894,6 +9018,10 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) } 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" },