X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=aa97093c5669144986d4746b8de9f0e66daf0e2e;hp=b9f9a3ae82b23eb72d8ec1069d69951cb1635cc3;hb=1c527635393b7bc090eb9833f302b329f8aacd23;hpb=3ff2e8a0b5c27b99a9920bdf5ed82bc41bf40181 diff --git a/src/libgame/setup.c b/src/libgame/setup.c index b9f9a3ae..aa97093c 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -30,7 +30,7 @@ #include "hash.h" -#define ENABLE_UNUSED_CODE 0 /* currently unused functions */ +#define ENABLE_UNUSED_CODE FALSE /* for currently unused functions */ #define NUM_LEVELCLASS_DESC 8 @@ -314,6 +314,9 @@ static char *getSetupArtworkDir(TreeInfo *ti) { static char *artwork_dir = NULL; + if (ti == NULL) + return NULL; + checked_free(artwork_dir); artwork_dir = getPath2(ti->basepath, ti->fullpath); @@ -613,7 +616,7 @@ char *getCustomImageFilename(char *basename) if (!gfx.override_level_graphics) { /* 1st try: look for special artwork in current level series directory */ - filename = getPath3(getCurrentLevelDir(), GRAPHICS_DIRECTORY, basename); + filename = getImg3(getCurrentLevelDir(), GRAPHICS_DIRECTORY, basename); if (fileExists(filename)) return filename; @@ -623,7 +626,7 @@ char *getCustomImageFilename(char *basename) if (getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) != NULL) { /* 2nd try: look for special artwork configured in level series config */ - filename = getPath2(getLevelArtworkDir(ARTWORK_TYPE_GRAPHICS), basename); + filename = getImg2(getLevelArtworkDir(ARTWORK_TYPE_GRAPHICS), basename); if (fileExists(filename)) return filename; @@ -637,7 +640,7 @@ char *getCustomImageFilename(char *basename) if (!skip_setup_artwork) { /* 3rd try: look for special artwork in configured artwork directory */ - filename = getPath2(getSetupArtworkDir(artwork.gfx_current), basename); + filename = getImg2(getSetupArtworkDir(artwork.gfx_current), basename); if (fileExists(filename)) return filename; @@ -645,14 +648,14 @@ char *getCustomImageFilename(char *basename) } /* 4th try: look for default artwork in new default artwork directory */ - filename = getPath2(getDefaultGraphicsDir(GFX_DEFAULT_SUBDIR), basename); + filename = getImg2(getDefaultGraphicsDir(GFX_DEFAULT_SUBDIR), basename); if (fileExists(filename)) return filename; free(filename); /* 5th try: look for default artwork in old default artwork directory */ - filename = getPath2(options.graphics_directory, basename); + filename = getImg2(options.graphics_directory, basename); if (fileExists(filename)) return filename; @@ -664,7 +667,7 @@ char *getCustomImageFilename(char *basename) /* 6th try: look for fallback artwork in old default artwork directory */ /* (needed to prevent errors when trying to access unused artwork files) */ - filename = getPath2(options.graphics_directory, GFX_FALLBACK_FILENAME); + filename = getImg2(options.graphics_directory, GFX_FALLBACK_FILENAME); if (fileExists(filename)) return filename; #endif @@ -1471,6 +1474,17 @@ char *getCookie(char *file_type) return cookie; } +void fprintFileHeader(FILE *file, char *basename) +{ + char *prefix = "# "; + char *sep1 = "="; + + fprintf_line_with_prefix(file, prefix, sep1, 77); + fprintf(file, "%s%s\n", prefix, basename); + fprintf_line_with_prefix(file, prefix, sep1, 77); + fprintf(file, "\n"); +} + int getFileVersionFromCookieString(const char *cookie) { const char *ptr_cookie1, *ptr_cookie2; @@ -1518,6 +1532,7 @@ boolean checkCookieString(const char *cookie, const char *template) return TRUE; } + /* ------------------------------------------------------------------------- */ /* setup file list and hash handling functions */ /* ------------------------------------------------------------------------- */ @@ -2100,17 +2115,6 @@ SetupFileHash *loadSetupFileHash(char *filename) return setup_file_hash; } -void checkSetupFileHashIdentifier(SetupFileHash *setup_file_hash, - char *filename, char *identifier) -{ - char *value = getHashEntry(setup_file_hash, TOKEN_STR_FILE_IDENTIFIER); - - if (value == NULL) - Error(ERR_WARN, "config file '%s' has no file identifier", filename); - else if (!checkCookieString(value, identifier)) - Error(ERR_WARN, "config file '%s' has wrong file identifier", filename); -} - /* ========================================================================= */ /* setup file stuff */ @@ -2814,9 +2818,6 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, leveldir_new->subdir = getStringCopy(directory_name); - checkSetupFileHashIdentifier(setup_file_hash, filename, - getCookie("LEVELINFO")); - /* set all structure fields according to the token/value pairs */ ldi = *leveldir_new; for (i = 0; i < NUM_LEVELINFO_TOKENS; i++) @@ -2872,8 +2873,7 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, (leveldir_new->user_defined || !leveldir_new->handicap ? leveldir_new->last_level : leveldir_new->first_level); - DrawInitTextExt(leveldir_new->name, 150, FC_YELLOW, - leveldir_new->level_group); + DrawInitText(leveldir_new->name, 150, FC_YELLOW); pushTreeInfo(node_first, leveldir_new); @@ -3024,9 +3024,7 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, { while ((dir_entry = readDirectory(dir)) != NULL) { - char *entry_name = dir_entry->basename; - - if (FileIsArtworkType(entry_name, type)) + if (FileIsArtworkType(dir_entry->filename, type)) { valid_file_found = TRUE; @@ -3339,8 +3337,7 @@ void LoadArtworkInfoFromLevelInfo(ArtworkDirTree **artwork_node, setArtworkInfoCacheEntry(artwork_new, level_node, type); } - DrawInitTextExt(level_node->name, 150, FC_YELLOW, - level_node->level_group); + DrawInitText(level_node->name, 150, FC_YELLOW); if (level_node->node_group != NULL) LoadArtworkInfoFromLevelInfo(artwork_node, level_node->node_group); @@ -3448,8 +3445,7 @@ static void SaveUserLevelInfo() token_value_position = TOKEN_VALUE_POSITION_SHORT; - fprintf(file, "%s\n\n", getFormattedSetupEntry(TOKEN_STR_FILE_IDENTIFIER, - getCookie("LEVELINFO"))); + fprintFileHeader(file, LEVELINFO_FILENAME); ldi = *level_info; for (i = 0; i < NUM_LEVELINFO_TOKENS; i++) @@ -3607,9 +3603,6 @@ void LoadLevelSetup_LastSeries() if (leveldir_current == NULL) leveldir_current = getFirstValidTreeInfoEntry(leveldir_first); - checkSetupFileHashIdentifier(level_setup_hash, filename, - getCookie("LEVELSETUP")); - freeSetupFileHash(level_setup_hash); } else @@ -3643,8 +3636,7 @@ static void SaveLevelSetup_LastSeries_Ext(boolean deactivate_last_level_series) return; } - fprintf(file, "%s\n\n", getFormattedSetupEntry(TOKEN_STR_FILE_IDENTIFIER, - getCookie("LEVELSETUP"))); + fprintFileHeader(file, LEVELSETUP_FILENAME); if (deactivate_last_level_series) fprintf(file, "# %s\n# ", "the following level set may have caused a problem and was deactivated"); @@ -3779,9 +3771,6 @@ void LoadLevelSetup_SeriesInfo() } END_HASH_ITERATION(hash, itr) - checkSetupFileHashIdentifier(level_setup_hash, filename, - getCookie("LEVELSETUP")); - freeSetupFileHash(level_setup_hash); } else @@ -3814,8 +3803,8 @@ void SaveLevelSetup_SeriesInfo() return; } - fprintf(file, "%s\n\n", getFormattedSetupEntry(TOKEN_STR_FILE_IDENTIFIER, - getCookie("LEVELSETUP"))); + fprintFileHeader(file, LEVELSETUP_FILENAME); + fprintf(file, "%s\n", getFormattedSetupEntry(TOKEN_STR_LAST_PLAYED_LEVEL, level_nr_str)); fprintf(file, "%s\n\n", getFormattedSetupEntry(TOKEN_STR_HANDICAP_LEVEL,