X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=7d32cda82ebe2ee5137a39c078fa91f7a13f26dc;hp=cb57311a3e10dcd2bccbe551fcd9d90c2b675181;hb=872cf2d86e73d185fcad1fac7b389e7d1dfcb839;hpb=e77c26313b1a1e3ddd884cdda005cb6758c1a100 diff --git a/src/files.c b/src/files.c index cb57311a..7d32cda8 100644 --- a/src/files.c +++ b/src/files.c @@ -8344,6 +8344,54 @@ void LoadCustomElementDescriptions() freeSetupFileHash(setup_file_hash); } +static int getElementFromToken(char *token) +{ + int i; + + /* !!! OPTIMIZE THIS BY USING HASH !!! */ + for (i = 0; i < MAX_NUM_ELEMENTS; i++) + if (strEqual(token, element_info[i].token_name)) + return i; + + Error(ERR_WARN, "unknown element token '%s'", token); + + return EL_UNDEFINED; +} + +static int get_token_parameter_value(char *token, char *value_raw) +{ + char *suffix; + + if (token == NULL || value_raw == NULL) + return ARG_UNDEFINED_VALUE; + + suffix = strrchr(token, '.'); + if (suffix == NULL) + suffix = token; + +#if 1 + if (strEqual(suffix, ".element")) + return getElementFromToken(value_raw); +#endif + +#if 0 + if (strncmp(suffix, ".font", 5) == 0) + { + int i; + + /* !!! OPTIMIZE THIS BY USING HASH !!! */ + for (i = 0; i < NUM_FONTS; i++) + if (strEqual(value_raw, font_info[i].token_name)) + return i; + + /* if font not found, use reliable default value */ + return FONT_INITIAL_1; + } +#endif + + return get_parameter_value(value_raw, suffix, TYPE_INTEGER); +} + static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) { static struct TitleMessageInfo tmi;