X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=cb1a9f77d277ee9177c0271771081f09430f1b93;hb=abe3ad50047635122f478f7e18708ff7292edf52;hp=834154c8708c7c85e331984851c602dabaa70f4c;hpb=4b78ae54d14520dc2ffe8868c363131c0b1b41f2;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 834154c8..cb1a9f77 100644 --- a/src/files.c +++ b/src/files.c @@ -12456,9 +12456,10 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) { struct TokenIntPtrInfo menu_config[] = { - { "menu.draw_xoffset", &menu.draw_xoffset[i] }, - { "menu.draw_yoffset", &menu.draw_yoffset[i] }, - { "menu.list_size", &menu.list_size[i] } + { "menu.draw_xoffset", &menu.draw_xoffset[i] }, + { "menu.draw_yoffset", &menu.draw_yoffset[i] }, + { "menu.list_size", &menu.list_size[i] }, + { "menu.list_entry_size", &menu.list_entry_size[i] } }; for (j = 0; j < ARRAY_SIZE(menu_config); j++) @@ -12479,7 +12480,8 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) { { "menu.draw_xoffset.INFO", &menu.draw_xoffset_info[i] }, { "menu.draw_yoffset.INFO", &menu.draw_yoffset_info[i] }, - { "menu.list_size.INFO", &menu.list_size_info[i] } + { "menu.list_size.INFO", &menu.list_size_info[i] }, + { "menu.list_entry_size.INFO", &menu.list_entry_size_info[i] } }; for (j = 0; j < ARRAY_SIZE(menu_config); j++) @@ -12934,16 +12936,29 @@ static boolean sound_info_listed(struct MusicFileInfo *list, char *basename) return music_info_listed_ext(list, basename, TRUE); } +static boolean checkLevelSetHasMusic_NoConf(void) +{ + int i; + + for (i = leveldir_current->first_level; + i <= leveldir_current->last_level; i++) + if (levelset.music[level_nr] == MUS_UNDEFINED) + return TRUE; + + return FALSE; +} + void LoadMusicInfo(void) { char *music_directory = getCustomMusicDirectory_NoConf(); int num_music = getMusicListSize(); int num_music_noconf = 0; int num_sounds = getSoundListSize(); - Directory *dir; + Directory *dir = NULL; DirectoryEntry *dir_entry; struct FileInfo *music, *sound; struct MusicFileInfo *next, **new; + boolean read_music_from_directory = TRUE; int i; while (music_file_info != NULL) @@ -12992,14 +13007,26 @@ void LoadMusicInfo(void) } } - if ((dir = openDirectory(music_directory)) == NULL) + // if all levels have game music configured, do not read music from directory + if (!checkLevelSetHasMusic_NoConf()) + { + read_music_from_directory = FALSE; + } + else if (music_directory == NULL) + { + Warn("cannot find music directory with unconfigured music"); + + read_music_from_directory = FALSE; + } + else if ((dir = openDirectory(music_directory)) == NULL) { Warn("cannot read music directory '%s'", music_directory); - return; + read_music_from_directory = FALSE; } - while ((dir_entry = readDirectory(dir)) != NULL) // loop all entries + while (read_music_from_directory && + (dir_entry = readDirectory(dir)) != NULL) // loop all entries { char *basename = dir_entry->basename; boolean music_already_used = FALSE; @@ -13037,7 +13064,8 @@ void LoadMusicInfo(void) num_music_noconf++; } - closeDirectory(dir); + if (dir != NULL) + closeDirectory(dir); for (i = 0; i < num_sounds; i++) {