X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=9a573b5e2d3678f133990ae0296660a905826e35;hb=f78f30b84a0345ea31b30c5bd95e338c9d9ebd4b;hp=562152961c32009cb61133db36eeb424b1c0e160;hpb=2e95647b2bd7e2fb71e052441638742e89b6aaf1;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 56215296..9a573b5e 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -393,6 +393,29 @@ inline static char *getLevelArtworkDir(int type) return LEVELDIR_ARTWORK_PATH(leveldir_current, type); } +char *getProgramConfigFilename(char *command_filename_ptr) +{ + char *command_filename_1 = getStringCopy(command_filename_ptr); + + // strip trailing executable suffix from command filename + if (strSuffix(command_filename_1, ".exe")) + command_filename_1[strlen(command_filename_1) - 4] = '\0'; + + char *command_basepath = getBasePath(command_filename_ptr); + char *command_basename = getBaseNameNoSuffix(command_filename_ptr); + char *command_filename_2 = getPath2(command_basepath, command_basename); + + char *config_filename_1 = getStringCat2(command_filename_1, ".conf"); + char *config_filename_2 = getStringCat2(command_filename_2, ".conf"); + + // 1st try: look for config file that exactly matches the binary filename + if (fileExists(config_filename_1)) + return config_filename_1; + + // 2nd try: return config filename that matches binary filename without suffix + return config_filename_2; +} + char *getTapeFilename(int nr) { static char *filename = NULL; @@ -456,6 +479,11 @@ char *getSetupFilename() return filename; } +char *getDefaultSetupFilename() +{ + return program.config_filename; +} + char *getEditorSetupFilename() { static char *filename = NULL; @@ -659,18 +687,20 @@ char *getCustomImageFilename(char *basename) if (fileExists(filename)) return filename; -#if defined(CREATE_SPECIAL_EDITION) - free(filename); + if (!strEqual(GFX_FALLBACK_FILENAME, UNDEFINED_FILENAME)) + { + free(filename); - if (options.debug) - Error(ERR_WARN, "cannot find artwork file '%s' (using fallback)", basename); + if (options.debug) + Error(ERR_WARN, "cannot find artwork file '%s' (using fallback)", + basename); - /* 6th try: look for fallback artwork in old default artwork directory */ - /* (needed to prevent errors when trying to access unused artwork files) */ - filename = getImg2(options.graphics_directory, GFX_FALLBACK_FILENAME); - if (fileExists(filename)) - return filename; -#endif + /* 6th try: look for fallback artwork in old default artwork directory */ + /* (needed to prevent errors when trying to access unused artwork files) */ + filename = getImg2(options.graphics_directory, GFX_FALLBACK_FILENAME); + if (fileExists(filename)) + return filename; + } return NULL; /* cannot find specified artwork file anywhere */ } @@ -730,18 +760,20 @@ char *getCustomSoundFilename(char *basename) if (fileExists(filename)) return filename; -#if defined(CREATE_SPECIAL_EDITION) - free(filename); + if (!strEqual(SND_FALLBACK_FILENAME, UNDEFINED_FILENAME)) + { + free(filename); - if (options.debug) - Error(ERR_WARN, "cannot find artwork file '%s' (using fallback)", basename); + if (options.debug) + Error(ERR_WARN, "cannot find artwork file '%s' (using fallback)", + 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.sounds_directory, SND_FALLBACK_FILENAME); - if (fileExists(filename)) - return filename; -#endif + /* 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.sounds_directory, SND_FALLBACK_FILENAME); + if (fileExists(filename)) + return filename; + } return NULL; /* cannot find specified artwork file anywhere */ } @@ -801,18 +833,20 @@ char *getCustomMusicFilename(char *basename) if (fileExists(filename)) return filename; -#if defined(CREATE_SPECIAL_EDITION) - free(filename); + if (!strEqual(MUS_FALLBACK_FILENAME, UNDEFINED_FILENAME)) + { + free(filename); - if (options.debug) - Error(ERR_WARN, "cannot find artwork file '%s' (using fallback)", basename); + if (options.debug) + Error(ERR_WARN, "cannot find artwork file '%s' (using fallback)", + 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.music_directory, MUS_FALLBACK_FILENAME); - if (fileExists(filename)) - return filename; -#endif + /* 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.music_directory, MUS_FALLBACK_FILENAME); + if (fileExists(filename)) + return filename; + } return NULL; /* cannot find specified artwork file anywhere */ } @@ -1357,30 +1391,6 @@ char *getUserGameDataDir(void) return user_game_data_dir; } -void updateUserGameDataDir() -{ -#if defined(PLATFORM_MACOSX) - char *userdata_dir_old = getPath2(getHomeDir(), program.userdata_subdir_unix); - char *userdata_dir_new = getUserGameDataDir(); /* do not free() this */ - - /* convert old Unix style game data directory to Mac OS X style, if needed */ - if (directoryExists(userdata_dir_old) && !directoryExists(userdata_dir_new)) - { - if (rename(userdata_dir_old, userdata_dir_new) != 0) - { - Error(ERR_WARN, "cannot move game data directory '%s' to '%s'", - userdata_dir_old, userdata_dir_new); - - /* continue using Unix style data directory -- this should not happen */ - program.userdata_path = getPath2(getPersonalDataDir(), - program.userdata_subdir_unix); - } - } - - free(userdata_dir_old); -#endif -} - char *getSetupDir() { return getUserGameDataDir(); @@ -3626,12 +3636,13 @@ void LoadLevelSetup_LastSeries() /* always start with reliable default values */ leveldir_current = getFirstValidTreeInfoEntry(leveldir_first); -#if defined(CREATE_SPECIAL_EDITION_RND_JUE) - leveldir_current = getTreeInfoFromIdentifier(leveldir_first, - "jue_start"); - if (leveldir_current == NULL) - leveldir_current = getFirstValidTreeInfoEntry(leveldir_first); -#endif + if (!strEqual(DEFAULT_LEVELSET, UNDEFINED_LEVELSET)) + { + leveldir_current = getTreeInfoFromIdentifier(leveldir_first, + DEFAULT_LEVELSET); + if (leveldir_current == NULL) + leveldir_current = getFirstValidTreeInfoEntry(leveldir_first); + } if ((level_setup_hash = loadSetupFileHash(filename))) { @@ -3739,7 +3750,7 @@ void LoadLevelSetup_SeriesInfo() LevelStats_setSolved(i, 0); } - checkSeriesInfo(leveldir_current); + checkSeriesInfo(); /* ----------------------------------------------------------------------- */ /* ~/./levelsetup//levelsetup.conf */