X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=70b2a5d6b802ccbcbe16894a44e5778ced15cfaf;hb=ad8306cba93c058f00e21871a290302ce728d6b8;hp=f487175728d274d820630ec09a205d9d7a2c846e;hpb=2ff21518535f914abaacf8ffc72bfbd2f319dcd5;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index f4871757..70b2a5d6 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" /* ------------------------------------------------------------------------- */ @@ -332,6 +333,7 @@ unsigned int get_random_number(int nr, unsigned int max) /* system info functions */ /* ------------------------------------------------------------------------- */ +#if !defined(PLATFORM_MSDOS) static char *get_corrected_real_name(char *real_name) { char *real_name_new = checked_malloc(MAX_USERNAME_LEN + 1); @@ -364,6 +366,7 @@ static char *get_corrected_real_name(char *real_name) return real_name_new; } +#endif char *getLoginName() { @@ -1801,8 +1804,16 @@ static void read_token_parameters(SetupFileHash *setup_file_hash, /* mark config file token as well known from default config */ setHashEntry(setup_file_hash, file_list_entry->token, known_token_value); } +#if 0 else + { + if (strcmp(file_list_entry->filename, + file_list_entry->default_filename) != 0) + printf("___ resetting '%s' to default\n", file_list_entry->token); + setString(&file_list_entry->filename, file_list_entry->default_filename); + } +#endif /* check for config tokens that can be build by base token and suffixes */ for (i=0; suffix_list[i].token != NULL; i++) @@ -1869,7 +1880,8 @@ static void add_property_mapping(struct PropertyMapping **list, new_list_entry->artwork_index = artwork_index; } -void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) +static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, + char *filename) { struct FileInfo *file_list = artwork_info->file_list; struct ConfigInfo *suffix_list = artwork_info->suffix_list; @@ -1885,55 +1897,17 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) 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; -#if 0 - printf("GOT CUSTOM ARTWORK CONFIG FILE '%s'\n", filename); -#endif - - /* always start with reliable default values */ - for (i=0; idynamic_file_list != NULL) - { - for (i=0; inum_dynamic_file_list_entries; i++) - { - free(artwork_info->dynamic_file_list[i].token); - free(artwork_info->dynamic_file_list[i].filename); - free(artwork_info->dynamic_file_list[i].parameter); - } - - free(artwork_info->dynamic_file_list); - artwork_info->dynamic_file_list = NULL; - - FreeCustomArtworkList(artwork_info, &artwork_info->dynamic_artwork_list, - &artwork_info->num_dynamic_file_list_entries); - } - - /* free previous property mapping */ - if (artwork_info->property_mapping != NULL) - { - free(artwork_info->property_mapping); - - artwork_info->property_mapping = NULL; - artwork_info->num_property_mapping_entries = 0; - } - if (filename == NULL) return; +#if 0 + printf("::: LoadArtworkConfigFromFilename: '%s'\n", filename); +#endif + if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; @@ -2191,11 +2165,11 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) } END_HASH_ITERATION(extra_file_hash, itr) -#if DEBUG - if (dynamic_tokens_found) + if (options.debug && 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) { @@ -2207,7 +2181,6 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) Error(ERR_RETURN_LINE, "-"); } -#endif if (unknown_tokens_found) { @@ -2243,6 +2216,70 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) #endif } +void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) +{ + 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 = UNDEFINED_FILENAME, *filename_local; + int i, j; + +#if 0 + printf("GOT CUSTOM ARTWORK CONFIG FILE '%s'\n", filename); +#endif + + /* always start with reliable default values */ + for (i=0; idynamic_file_list != NULL) + { + for (i=0; inum_dynamic_file_list_entries; i++) + { + free(artwork_info->dynamic_file_list[i].token); + free(artwork_info->dynamic_file_list[i].filename); + free(artwork_info->dynamic_file_list[i].parameter); + } + + free(artwork_info->dynamic_file_list); + artwork_info->dynamic_file_list = NULL; + + FreeCustomArtworkList(artwork_info, &artwork_info->dynamic_artwork_list, + &artwork_info->num_dynamic_file_list_entries); + } + + /* free previous property mapping */ + if (artwork_info->property_mapping != NULL) + { + free(artwork_info->property_mapping); + + artwork_info->property_mapping = NULL; + artwork_info->num_property_mapping_entries = 0; + } + + 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 (fileExists(filename_base)) + LoadArtworkConfigFromFilename(artwork_info, filename_base); + } + + filename_local = getCustomArtworkConfigFilename(artwork_info->type); + + if (filename_local != NULL && strcmp(filename_base, filename_local) != 0) + LoadArtworkConfigFromFilename(artwork_info, filename_local); +} + static void deleteArtworkListEntry(struct ArtworkListInfo *artwork_info, struct ListNodeInfo **listnode) { @@ -2273,7 +2310,7 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, char *basename) { char *init_text[] = - { "", + { "Loading graphics:", "Loading sounds:", "Loading music:" @@ -2282,18 +2319,15 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, ListNode *node; char *filename = getCustomArtworkFilename(basename, artwork_info->type); -#if 1 - if (strcmp(basename, "RocksScreen.pcx") == 0) - printf("::: got filename '%s'\n", filename); -#endif - if (filename == NULL) { 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; @@ -2306,11 +2340,8 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, This usually means that this artwork does not exist in this artwork set and a fallback to the existing artwork is done. */ -#if 1 -#if 1 - if (strcmp(basename, "RocksScreen.pcx") == 0) -#endif - printf("[artwork '%s' already exists (same list entry)]\n", filename); +#if 0 + printf("[artwork '%s' already exists (same list entry)]\n", filename); #endif return; @@ -2332,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); @@ -2349,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; @@ -2418,9 +2455,28 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) #endif for(i=0; i '%s'\n", file_list[i].token, file_list[i].filename); +#endif + 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 printf("DEBUG: reloading %d dynamic artwork files ...\n", num_dynamic_file_list_entries);