X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=910a7e95ef1d18a725549daad837bbf26a3c9ded;hb=c38b8938950533926b72af227c38513fe665a8f6;hp=498a96e89231d3c9de9fa47ad680ba1d948a6e67;hpb=68a47a5b92e7c62a8c8a06391e4f9b8d53eeb82f;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 498a96e8..910a7e95 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -1362,7 +1362,7 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, { struct FileInfo *file_list; int num_suffix_list_entries = 0; - int list_pos = -1; + int list_pos = 0; int i, j; file_list = checked_calloc(num_file_list_entries * sizeof(struct FileInfo)); @@ -1373,9 +1373,9 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, /* always start with reliable default values */ for (i=0; i 0) { @@ -1397,6 +1397,7 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, for (i=0; config_list[i].token != NULL; i++) { int len_config_token = strlen(config_list[i].token); + int len_config_value = strlen(config_list[i].value); boolean is_file_entry = TRUE; for (j=0; suffix_list[j].token != NULL; j++) @@ -1416,10 +1417,21 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, if (is_file_entry) { - list_pos++; + if (i > 0) + list_pos++; + + if (list_pos > num_file_list_entries - 1) + break; - if (list_pos >= num_file_list_entries) - Error(ERR_EXIT, "inconsistant config list information -- please fix"); + /* simple sanity check if this is really a file definition */ + if (strcmp(&config_list[i].value[len_config_value - 4], ".pcx") != 0 && + strcmp(&config_list[i].value[len_config_value - 4], ".wav") != 0 && + strcmp(config_list[i].value, UNDEFINED_FILENAME) != 0) + { + Error(ERR_RETURN, "Configuration directive '%s' -> '%s':", + config_list[i].token, config_list[i].value); + Error(ERR_EXIT, "This seems to be no valid definition -- please fix"); + } file_list[list_pos].token = config_list[i].token; file_list[list_pos].default_filename = config_list[i].value; @@ -1464,8 +1476,11 @@ static void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) { for (i=0; itype); + + if (filename == NULL) + { + Error(ERR_WARN, "cannot find artwork file '%s'", basename); + return; + } /* check if the old and the new artwork file are the same */ if (*listnode && strcmp((*listnode)->source_filename, filename) == 0) @@ -1549,9 +1580,19 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, *listnode = (struct ListNodeInfo *)node->content; (*listnode)->num_references++; + + return; } - else if ((*listnode = artwork_info->load_artwork(filename)) != NULL) + + DrawInitText(init_text[artwork_info->type], 120, FC_GREEN); + DrawInitText(basename, 150, FC_YELLOW); + + if ((*listnode = artwork_info->load_artwork(filename)) != NULL) { +#if 0 + printf("[adding new artwork '%s']\n", filename); +#endif + (*listnode)->num_references = 1; addNodeToList(&artwork_info->content_list, (*listnode)->source_filename, *listnode); @@ -1562,7 +1603,9 @@ static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, struct ListNodeInfo **listnode, char *basename) { +#if 0 char *filename = getCustomArtworkFilename(basename, artwork_info->type); +#endif #if 0 printf("GOT CUSTOM ARTWORK FILE '%s'\n", filename); @@ -1574,6 +1617,7 @@ static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, return; } +#if 0 if (filename == NULL) { Error(ERR_WARN, "cannot find artwork file '%s'", basename); @@ -1581,6 +1625,9 @@ static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, } replaceArtworkListEntry(artwork_info, listnode, filename); +#else + replaceArtworkListEntry(artwork_info, listnode, basename); +#endif } static void LoadArtworkToList(struct ArtworkListInfo *artwork_info, @@ -1606,6 +1653,7 @@ static void LoadArtworkToList(struct ArtworkListInfo *artwork_info, void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) { +#if 0 static struct { char *text; @@ -1618,6 +1666,7 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) { "Loading sounds:", TRUE }, { "Loading music:", TRUE } }; +#endif int num_file_list_entries = artwork_info->num_file_list_entries; struct FileInfo *file_list = artwork_info->file_list; @@ -1625,25 +1674,32 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) LoadArtworkConfig(artwork_info); +#if 0 if (draw_init[artwork_info->type].do_it) DrawInitText(draw_init[artwork_info->type].text, 120, FC_GREEN); +#endif #if 0 - printf("DEBUG: reloading %d sounds ...\n", num_file_list_entries); + printf("DEBUG: reloading %d artwork files ...\n", num_file_list_entries); #endif for(i=0; itype].do_it) DrawInitText(file_list[i].token, 150, FC_YELLOW); +#endif - if (file_list[i].filename) - LoadArtworkToList(artwork_info, file_list[i].filename, i); - else - LoadArtworkToList(artwork_info, file_list[i].default_filename, i); + LoadArtworkToList(artwork_info, file_list[i].filename, i); + +#if 0 + printf("DEBUG: loading artwork file '%s'...\n", file_list[i].filename); +#endif } +#if 0 draw_init[artwork_info->type].do_it = FALSE; +#endif /* printf("list size == %d\n", getNumNodes(artwork_info->content_list));