X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=e300b9bb50821b6c4115fb0e2a8181af2ea57de5;hb=e77c26313b1a1e3ddd884cdda005cb6758c1a100;hp=3fcf5af1ce6a38d7af105dd5eb6e89306c47bde7;hpb=c6b89ec21b03182c40ae2eda40d861c09f179daf;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 3fcf5af1..e300b9bb 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -106,7 +106,7 @@ char *int2str(int number, int size) if (size > 20) size = 20; - if (size) + if (size > 0) { sprintf(s, " %09d", number); return &s[strlen(s) - size]; @@ -557,6 +557,21 @@ char *getStringCopy(char *s) return s_copy; } +char *getStringCopyN(char *s, int n) +{ + char *s_copy; + int s_len = MAX(0, n); + + if (s == NULL) + return NULL; + + s_copy = checked_malloc(s_len + 1); + strncpy(s_copy, s, s_len); + s_copy[s_len] = '\0'; + + return s_copy; +} + char *getStringToLower(char *s) { char *s_copy = checked_malloc(strlen(s) + 1); @@ -584,6 +599,14 @@ boolean strEqual(char *s1, char *s2) strcmp(s1, s2) == 0); } +boolean strEqualN(char *s1, char *s2, int n) +{ + return (s1 == NULL && s2 == NULL ? TRUE : + s1 == NULL && s2 != NULL ? FALSE : + s1 != NULL && s2 == NULL ? FALSE : + strncmp(s1, s2, n) == 0); +} + /* ------------------------------------------------------------------------- */ /* command line option handling functions */ @@ -1811,8 +1834,6 @@ int get_parameter_value(char *value_raw, char *suffix, int type) string_has_parameter(value, "horizontal") ? ANIM_HORIZONTAL : string_has_parameter(value, "vertical") ? ANIM_VERTICAL : string_has_parameter(value, "centered") ? ANIM_CENTERED : - string_has_parameter(value, "fade") ? ANIM_FADE : - string_has_parameter(value, "crossfade") ? ANIM_CROSSFADE : ANIM_DEFAULT); if (string_has_parameter(value, "reverse")) @@ -1824,7 +1845,15 @@ int get_parameter_value(char *value_raw, char *suffix, int type) if (string_has_parameter(value, "static_panel")) result |= ANIM_STATIC_PANEL; } - else if (strEqual(suffix, ".font")) + else if (strEqual(suffix, ".fade_mode")) + { + result = (string_has_parameter(value, "none") ? FADE_MODE_NONE : + string_has_parameter(value, "fade") ? FADE_MODE_FADE : + string_has_parameter(value, "crossfade") ? FADE_MODE_CROSSFADE : + string_has_parameter(value, "melt") ? FADE_MODE_MELT : + FADE_MODE_DEFAULT); + } + else if (strEqualN(suffix, ".font", 5)) /* (may also be ".font_xyz") */ { result = gfx.get_font_from_token_function(value); } @@ -2293,10 +2322,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, base_index = i; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> MATCH: '%s', '%s'\n", token, base_prefix); +#endif + if (start_pos + len_base_prefix == len_token) /* exact match */ { exact_match = TRUE; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> EXACT MATCH: '%s', '%s'\n", token, base_prefix); +#endif + add_dynamic_file_list_entry(dynamic_file_list, num_dynamic_file_list_entries, extra_file_hash, @@ -2330,10 +2369,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, ext1_index = j; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> MATCH: '%s', '%s'\n", token, ext1_suffix); +#endif + if (start_pos + len_ext1_suffix == len_token) /* exact match */ { exact_match = TRUE; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> EXACT MATCH: '%s', '%s'\n", token, ext1_suffix); +#endif + add_dynamic_file_list_entry(dynamic_file_list, num_dynamic_file_list_entries, extra_file_hash, @@ -2372,10 +2421,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, ext2_index = k; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> MATCH: '%s', '%s'\n", token, ext2_suffix); +#endif + if (start_pos + len_ext2_suffix == len_token) /* exact match */ { exact_match = TRUE; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> EXACT MATCH: '%s', '%s'\n", token, ext2_suffix); +#endif + add_dynamic_file_list_entry(dynamic_file_list, num_dynamic_file_list_entries, extra_file_hash, @@ -2414,10 +2473,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, ext3_index = l; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> MATCH: '%s', '%s'\n", token, ext3_suffix); +#endif + if (start_pos + len_ext3_suffix == len_token) /* exact match */ { exact_match = TRUE; +#if 0 + if (IS_PARENT_PROCESS()) + printf("===> EXACT MATCH: '%s', '%s'\n", token, ext3_suffix); +#endif + add_dynamic_file_list_entry(dynamic_file_list, num_dynamic_file_list_entries, extra_file_hash,