X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=7caaa3af88251b1601ff0abe0864058c6fe31c7c;hb=05ca3ceb489c27197cf846441c1464536479a5cb;hp=bde3ea638ccc744881a3d393fdf50190adf174bf;hpb=c9735f4510c07f163fc103d61ba4e0d2010c2032;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index bde3ea63..7caaa3af 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -1234,6 +1234,63 @@ char getCharFromKey(Key key) } +/* ------------------------------------------------------------------------- */ +/* functions to translate string identifiers to integer or boolean value */ +/* ------------------------------------------------------------------------- */ + +int get_integer_from_string(char *s) +{ + static char *number_text[][3] = + { + { "0", "zero", "null", }, + { "1", "one", "first" }, + { "2", "two", "second" }, + { "3", "three", "third" }, + { "4", "four", "fourth" }, + { "5", "five", "fifth" }, + { "6", "six", "sixth" }, + { "7", "seven", "seventh" }, + { "8", "eight", "eighth" }, + { "9", "nine", "ninth" }, + { "10", "ten", "tenth" }, + { "11", "eleven", "eleventh" }, + { "12", "twelve", "twelfth" }, + }; + + int i, j; + char *s_lower = getStringToLower(s); + int result = -1; + + for (i=0; i<13; i++) + for (j=0; j<3; j++) + if (strcmp(s_lower, number_text[i][j]) == 0) + result = i; + + if (result == -1) + result = atoi(s); + + free(s_lower); + + return result; +} + +boolean get_boolean_from_string(char *s) +{ + char *s_lower = getStringToLower(s); + boolean result = FALSE; + + if (strcmp(s_lower, "true") == 0 || + strcmp(s_lower, "yes") == 0 || + strcmp(s_lower, "on") == 0 || + get_integer_from_string(s) == 1) + result = TRUE; + + free(s_lower); + + return result; +} + + /* ========================================================================= */ /* functions for generic lists */ /* ========================================================================= */ @@ -1369,6 +1426,13 @@ boolean FileIsArtworkType(char *basename, int type) /* functions for loading artwork configuration information */ /* ========================================================================= */ +static int get_parameter_value(int type, char *value) +{ + return (type == TYPE_INTEGER ? get_integer_from_string(value) : + type == TYPE_BOOLEAN ? get_boolean_from_string(value) : + -1); +} + struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, struct ConfigInfo *suffix_list, int num_file_list_entries) @@ -1400,7 +1464,8 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, for (j=0; j