X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=501339f135e66edb086800e341df9aef93c67347;hb=dbe6f9f331452b40183a12219d57eb234ff078fe;hp=7c35c2359b8183c4526bfa0ab669912d426a4d8a;hpb=b1f42b6eb7bfa63765e34366a2fd51ed9dd0be86;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 7c35c235..501339f1 100644 --- a/src/files.c +++ b/src/files.c @@ -7774,10 +7774,11 @@ void SaveScore(int nr) #define NUM_PLAYER_SETUP_TOKENS 16 /* system setup */ -#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER 0 -#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 1 +#define SETUP_TOKEN_SYSTEM_SDL_VIDEODRIVER 0 +#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER 1 +#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 2 -#define NUM_SYSTEM_SETUP_TOKENS 2 +#define NUM_SYSTEM_SETUP_TOKENS 3 /* options setup */ #define SETUP_TOKEN_OPTIONS_VERBOSE 0 @@ -7917,6 +7918,7 @@ static struct TokenInfo player_setup_tokens[] = static struct TokenInfo system_setup_tokens[] = { + { TYPE_STRING, &syi.sdl_videodriver, "system.sdl_videodriver" }, { TYPE_STRING, &syi.sdl_audiodriver, "system.sdl_audiodriver" }, { TYPE_INTEGER, &syi.audio_fragment_size,"system.audio_fragment_size" }, }; @@ -8028,6 +8030,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->input[i].key.drop = (i == 0 ? DEFAULT_KEY_DROP : KSYM_UNDEFINED); } + si->system.sdl_videodriver = getStringCopy(ARG_DEFAULT); si->system.sdl_audiodriver = getStringCopy(ARG_DEFAULT); si->system.audio_fragment_size = DEFAULT_AUDIO_FRAGMENT_SIZE; @@ -8320,8 +8323,39 @@ void LoadCustomElementDescriptions() static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) { + static struct TitleMessageInfo tmi; + static struct TokenInfo titlemessage_tokens[] = + { + { TYPE_INTEGER, &tmi.x, ".x" }, + { TYPE_INTEGER, &tmi.y, ".y" }, + { TYPE_INTEGER, &tmi.width, ".width" }, + { TYPE_INTEGER, &tmi.height, ".height" }, + { TYPE_INTEGER, &tmi.chars, ".chars" }, + { TYPE_INTEGER, &tmi.lines, ".lines" }, + { TYPE_INTEGER, &tmi.align, ".align" }, + { TYPE_INTEGER, &tmi.valign, ".valign" }, + { TYPE_INTEGER, &tmi.font, ".font" }, + { TYPE_BOOLEAN, &tmi.autowrap, ".autowrap" }, + { TYPE_BOOLEAN, &tmi.centered, ".centered" }, + { TYPE_BOOLEAN, &tmi.parse_comments, ".parse_comments" }, + { TYPE_INTEGER, &tmi.sort_priority, ".sort_priority" }, + + { -1, NULL, NULL } + }; + static struct + { + struct TitleMessageInfo *array; + char *text; + } + titlemessage_arrays[] = + { + { titlemessage_initial, "[titlemessage_initial]" }, + { titlemessage, "[titlemessage]" }, + + { NULL, NULL } + }; SetupFileHash *setup_file_hash; - int i; + int i, j, k; #if 0 printf("LoadSpecialMenuDesignSettings from file '%s' ...\n", filename); @@ -8333,28 +8367,60 @@ static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) /* special case: initialize with default values that may be overwritten */ for (i = 0; i < NUM_SPECIAL_GFX_ARGS; i++) { - char *value_x = getHashEntry(setup_file_hash, "menu.draw_xoffset"); - char *value_y = getHashEntry(setup_file_hash, "menu.draw_yoffset"); - char *list_size = getHashEntry(setup_file_hash, "menu.list_size"); + char *value_1 = getHashEntry(setup_file_hash, "menu.draw_xoffset"); + char *value_2 = getHashEntry(setup_file_hash, "menu.draw_yoffset"); + char *value_3 = getHashEntry(setup_file_hash, "menu.list_size"); - if (value_x != NULL) - menu.draw_xoffset[i] = get_integer_from_string(value_x); - if (value_y != NULL) - menu.draw_yoffset[i] = get_integer_from_string(value_y); - if (list_size != NULL) - menu.list_size[i] = get_integer_from_string(list_size); + if (value_1 != NULL) + menu.draw_xoffset[i] = get_integer_from_string(value_1); + if (value_2 != NULL) + menu.draw_yoffset[i] = get_integer_from_string(value_2); + if (value_3 != NULL) + menu.list_size[i] = get_integer_from_string(value_3); } /* special case: initialize with default values that may be overwritten */ for (i = 0; i < NUM_SPECIAL_GFX_INFO_ARGS; i++) { - char *value_x = getHashEntry(setup_file_hash, "menu.draw_xoffset.INFO"); - char *value_y = getHashEntry(setup_file_hash, "menu.draw_yoffset.INFO"); + char *value_1 = getHashEntry(setup_file_hash, "menu.draw_xoffset.INFO"); + char *value_2 = getHashEntry(setup_file_hash, "menu.draw_yoffset.INFO"); - if (value_x != NULL) - menu.draw_xoffset_info[i] = get_integer_from_string(value_x); - if (value_y != NULL) - menu.draw_yoffset_info[i] = get_integer_from_string(value_y); + if (value_1 != NULL) + 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); + } + + /* special case: initialize with default values that may be overwritten */ + for (i = 0; titlemessage_arrays[i].array != NULL; i++) + { + struct TitleMessageInfo *array = titlemessage_arrays[i].array; + char *base_token = titlemessage_arrays[i].text; + + for (j = 0; titlemessage_tokens[j].type != -1; j++) + { + char *token = getStringCat2(base_token, titlemessage_tokens[j].text); + char *value = getHashEntry(setup_file_hash, token); + + if (value != NULL) + { + int parameter_value = get_token_parameter_value(token, value); + + for (k = 0; k < MAX_NUM_TITLE_MESSAGES; k++) + { + 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; + + array[k] = tmi; + } + } + + free(token); + } } /* read (and overwrite with) values that may be specified in config file */ @@ -8364,7 +8430,7 @@ static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) if (value != NULL) *image_config_vars[i].value = - get_auto_parameter_value(image_config_vars[i].token, value); + get_token_parameter_value(image_config_vars[i].token, value); } freeSetupFileHash(setup_file_hash); @@ -8375,13 +8441,20 @@ void LoadSpecialMenuDesignSettings() char *filename_base = UNDEFINED_FILENAME, *filename_local; int i, j; - /* always start with reliable default values from default config */ + /* always start with reliable default values from static default config */ for (i = 0; image_config_vars[i].token != NULL; i++) for (j = 0; image_config[j].token != NULL; j++) if (strEqual(image_config_vars[i].token, image_config[j].token)) *image_config_vars[i].value = - get_auto_parameter_value(image_config_vars[i].token, - image_config[j].value); + get_token_parameter_value(image_config_vars[i].token, + image_config[j].value); + + /* special case: initialize with default values that may be overwritten */ + for (i = 0; i < MAX_NUM_TITLE_MESSAGES; i++) + { + titlemessage_initial[i] = titlemessage_initial_default; + titlemessage[i] = titlemessage_default; + } if (!SETUP_OVERRIDE_ARTWORK(setup, ARTWORK_TYPE_GRAPHICS)) { @@ -8453,19 +8526,19 @@ void LoadUserDefinedEditorElementList(int **elements, int *num_elements) { if (num_unknown_tokens == 0) { - Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "warning: unknown token(s) found in config file:"); - Error(ERR_RETURN, "- config file: '%s'", filename); + Error(ERR_INFO_LINE, "-"); + Error(ERR_INFO, "warning: unknown token(s) found in config file:"); + Error(ERR_INFO, "- config file: '%s'", filename); num_unknown_tokens++; } - Error(ERR_RETURN, "- token: '%s'", list->token); + Error(ERR_INFO, "- token: '%s'", list->token); } } if (num_unknown_tokens > 0) - Error(ERR_RETURN_LINE, "-"); + Error(ERR_INFO_LINE, "-"); while (*num_elements % 4) /* pad with empty elements, if needed */ (*elements)[(*num_elements)++] = EL_EMPTY; @@ -8766,18 +8839,18 @@ void print_unknown_token(char *filename, char *token, int token_nr) { if (token_nr == 0) { - Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "warning: unknown token(s) found in config file:"); - Error(ERR_RETURN, "- config file: '%s'", filename); + Error(ERR_INFO_LINE, "-"); + Error(ERR_INFO, "warning: unknown token(s) found in config file:"); + Error(ERR_INFO, "- config file: '%s'", filename); } - Error(ERR_RETURN, "- token: '%s'", token); + Error(ERR_INFO, "- token: '%s'", token); } void print_unknown_token_end(int token_nr) { if (token_nr > 0) - Error(ERR_RETURN_LINE, "-"); + Error(ERR_INFO_LINE, "-"); } void LoadHelpAnimInfo()