X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=f8b9e8b859c9fe94e2eb09f8a13c2f92e3ddfa31;hb=ff45a13c41aeeb995cb556c3f3b7f7be477fc214;hp=c357e2c7003fb45894f0603cf0b6b22fb4dfbff6;hpb=7ecbe0a730dc19d8a46ffe6bbcb052f20d0c4152;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index c357e2c7..f8b9e8b8 100644 --- a/src/files.c +++ b/src/files.c @@ -8757,6 +8757,14 @@ 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_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; @@ -8770,6 +8778,8 @@ 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[i] = titlescreen_initial_default; + titlescreen[i] = titlescreen_default; titlemessage_initial[i] = titlemessage_initial_default; titlemessage[i] = titlemessage_default; } @@ -8778,8 +8788,12 @@ static void InitMenuDesignSettings_SpecialPreProcessing() /* (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 */ @@ -8790,8 +8804,10 @@ static void InitMenuDesignSettings_SpecialPreProcessing() 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]; + if (i == GFX_SPECIAL_ARG_EDITOR) /* editor values already initialized */ + continue; + + viewport.door_2[i] = viewport.door_2[GFX_SPECIAL_ARG_DEFAULT]; } } @@ -8831,7 +8847,17 @@ static void InitMenuDesignSettings_SpecialPostProcessing() 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" }, @@ -8855,12 +8881,56 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) { -1, NULL, NULL } }; static struct + { + struct TitleFadingInfo *info; + char *text; + } + title_info[] = + { + /* 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]" }, @@ -8934,12 +9004,18 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) 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, @@ -8959,6 +9035,15 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) 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 */ @@ -9041,6 +9126,33 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) 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++) @@ -9062,9 +9174,9 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) 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; }