X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=cb79ee2270d765dfc9f8c296402a3fe527bd0609;hb=c2e3fd53db25f745d11fbe9b19bef78b3a3461a7;hp=264060305f3ba9e64d6d7268da8a1ca472fcfbb1;hpb=268045d6b06349f1cf10d5cc6f9516b5caa20dea;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 26406030..cb79ee22 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -30,6 +30,7 @@ #include "setup.h" #include "random.h" #include "text.h" +#include "image.h" /* ------------------------------------------------------------------------- */ @@ -2166,7 +2167,8 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, if (dynamic_tokens_found) { Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "dynamic token(s) found:"); + Error(ERR_RETURN, "dynamic token(s) found in config file:"); + Error(ERR_RETURN, "- config file: '%s'", filename); for (list = setup_file_list; list != NULL; list = list->next) { @@ -2216,32 +2218,11 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) { -#if 0 struct FileInfo *file_list = artwork_info->file_list; - struct ConfigInfo *suffix_list = artwork_info->suffix_list; - char **base_prefixes = artwork_info->base_prefixes; - char **ext1_suffixes = artwork_info->ext1_suffixes; - char **ext2_suffixes = artwork_info->ext2_suffixes; - char **ext3_suffixes = artwork_info->ext3_suffixes; - char **ignore_tokens = artwork_info->ignore_tokens; int num_file_list_entries = artwork_info->num_file_list_entries; int num_suffix_list_entries = artwork_info->num_suffix_list_entries; - int num_base_prefixes = artwork_info->num_base_prefixes; - int num_ext1_suffixes = artwork_info->num_ext1_suffixes; - int num_ext2_suffixes = artwork_info->num_ext2_suffixes; - int num_ext3_suffixes = artwork_info->num_ext3_suffixes; - int num_ignore_tokens = artwork_info->num_ignore_tokens; - char *filename = getCustomArtworkConfigFilename(artwork_info->type); - SetupFileHash *setup_file_hash, *extra_file_hash; - char *known_token_value = KNOWN_TOKEN_VALUE; - int i, j, k, l; -#else - struct FileInfo *file_list = artwork_info->file_list; - int num_file_list_entries = artwork_info->num_file_list_entries; - int num_suffix_list_entries = artwork_info->num_suffix_list_entries; - char *filename_base, *filename_local; + char *filename_base = UNDEFINED_FILENAME, *filename_local; int i, j; -#endif #if 0 printf("GOT CUSTOM ARTWORK CONFIG FILE '%s'\n", filename); @@ -2284,350 +2265,19 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) artwork_info->num_property_mapping_entries = 0; } -#if 1 - /* first look for special artwork configured in level series config */ - filename_base = getCustomArtworkLevelConfigFilename(artwork_info->type); - - if (fileExists(filename_base)) - LoadArtworkConfigFromFilename(artwork_info, filename_base); + if (!SETUP_OVERRIDE_ARTWORK(setup, artwork_info->type)) + { + /* first look for special artwork configured in level series config */ + filename_base = getCustomArtworkLevelConfigFilename(artwork_info->type); -#if 0 - for(i=0; i '%s'\n", - file_list[i].token, file_list[i].filename); -#endif + if (fileExists(filename_base)) + LoadArtworkConfigFromFilename(artwork_info, filename_base); + } -#if 1 filename_local = getCustomArtworkConfigFilename(artwork_info->type); if (filename_local != NULL && strcmp(filename_base, filename_local) != 0) LoadArtworkConfigFromFilename(artwork_info, filename_local); - -#if 0 - for(i=0; i '%s'\n", - file_list[i].token, file_list[i].filename); -#endif - -#endif -#endif - -#if 0 - - if (filename == NULL) - return; - - if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) - return; - - /* read parameters for all known config file tokens */ - for (i=0; idynamic_file_list; - int *num_dynamic_file_list_entries = - &artwork_info->num_dynamic_file_list_entries; - struct PropertyMapping **property_mapping = - &artwork_info->property_mapping; - int *num_property_mapping_entries = - &artwork_info->num_property_mapping_entries; - int current_summarized_file_list_entry = - artwork_info->num_file_list_entries + - artwork_info->num_dynamic_file_list_entries; - char *token = HASH_ITERATION_TOKEN(itr); - int len_token = strlen(token); - int start_pos; - boolean base_prefix_found = FALSE; - boolean parameter_suffix_found = FALSE; - - /* skip all parameter definitions (handled by read_token_parameters()) */ - for (i=0; i < num_suffix_list_entries && !parameter_suffix_found; i++) - { - int len_suffix = strlen(suffix_list[i].token); - - if (token_suffix_match(token, suffix_list[i].token, -len_suffix)) - parameter_suffix_found = TRUE; - } - -#if 0 - if (IS_PARENT_PROCESS()) - { - if (parameter_suffix_found) - printf("---> skipping token '%s' (parameter token)\n", token); - else - printf("---> examining token '%s': search prefix ...\n", token); - } -#endif - - if (parameter_suffix_found) - continue; - - /* ---------- step 0: search for matching base prefix ---------- */ - - start_pos = 0; - for (i=0; i examining token '%s': search 1st suffix ...\n", token); -#endif - - /* ---------- step 1: search for matching first suffix ---------- */ - - start_pos += len_base_prefix; - for (j=0; j examining token '%s': search 2nd suffix ...\n", token); -#endif - - /* ---------- step 2: search for matching second suffix ---------- */ - - for (k=0; k examining token '%s': search 3rd suffix ...\n",token); -#endif - - /* ---------- step 3: search for matching third suffix ---------- */ - - for (l=0; lnum_dynamic_file_list_entries > 0) - { - artwork_info->dynamic_artwork_list = - checked_calloc(artwork_info->num_dynamic_file_list_entries * - artwork_info->sizeof_artwork_list_entry); - } - - if (extra_file_hash != NULL && options.verbose && IS_PARENT_PROCESS()) - { - SetupFileList *setup_file_list, *list; - boolean dynamic_tokens_found = FALSE; - boolean unknown_tokens_found = FALSE; - - if ((setup_file_list = loadSetupFileList(filename)) == NULL) - Error(ERR_EXIT, "loadSetupFileHash works, but loadSetupFileList fails"); - - BEGIN_HASH_ITERATION(extra_file_hash, itr) - { - if (strcmp(HASH_ITERATION_VALUE(itr), known_token_value) == 0) - dynamic_tokens_found = TRUE; - else - unknown_tokens_found = TRUE; - } - END_HASH_ITERATION(extra_file_hash, itr) - -#if DEBUG - if (dynamic_tokens_found) - { - Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "dynamic token(s) found:"); - - for (list = setup_file_list; list != NULL; list = list->next) - { - char *value = getHashEntry(extra_file_hash, list->token); - - if (value != NULL && strcmp(value, known_token_value) == 0) - Error(ERR_RETURN, "- dynamic token: '%s'", list->token); - } - - Error(ERR_RETURN_LINE, "-"); - } -#endif - - if (unknown_tokens_found) - { - Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "warning: unknown token(s) found in config file:"); - Error(ERR_RETURN, "- config file: '%s'", filename); - - for (list = setup_file_list; list != NULL; list = list->next) - { - char *value = getHashEntry(extra_file_hash, list->token); - - if (value != NULL && strcmp(value, known_token_value) != 0) - Error(ERR_RETURN, "- dynamic token: '%s'", list->token); - } - - Error(ERR_RETURN_LINE, "-"); - } - - freeSetupFileList(setup_file_list); - } - - freeSetupFileHash(extra_file_hash); - -#if 0 - for (i=0; i '%s'\n", file_list[i].filename); - else - printf("-> UNDEFINED [-> '%s']\n", file_list[i].default_filename); - } -#endif - -#endif } static void deleteArtworkListEntry(struct ArtworkListInfo *artwork_info, @@ -2660,7 +2310,7 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, char *basename) { char *init_text[] = - { "", + { "Loading graphics:", "Loading sounds:", "Loading music:" @@ -2673,9 +2323,11 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, { int error_mode = ERR_WARN; +#if 1 /* we can get away without sounds and music, but not without graphics */ if (*listnode == NULL && artwork_info->type == ARTWORK_TYPE_GRAPHICS) error_mode = ERR_EXIT; +#endif Error(error_mode, "cannot find artwork file '%s'", basename); return; @@ -2711,6 +2363,10 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, return; } +#if 0 + printf("::: %s: '%s'\n", init_text[artwork_info->type], basename); +#endif + DrawInitText(init_text[artwork_info->type], 120, FC_GREEN); DrawInitText(basename, 150, FC_YELLOW); @@ -2728,9 +2384,11 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, { int error_mode = ERR_WARN; +#if 1 /* we can get away without sounds and music, but not without graphics */ if (artwork_info->type == ARTWORK_TYPE_GRAPHICS) error_mode = ERR_EXIT; +#endif Error(error_mode, "cannot load artwork file '%s'", basename); return; @@ -2805,6 +2463,18 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i], file_list[i].filename, i); + +#if 0 + if (artwork_info->artwork_list[i] == NULL && + strcmp(file_list[i].default_filename, file_list[i].filename) != 0) + { + Error(ERR_WARN, "trying default artwork file '%s'", + file_list[i].default_filename); + + LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i], + file_list[i].default_filename, i); + } +#endif } #if 0