X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flibgame%2Fsound.c;h=9b0282bc6de704d38de2c9cffc894894accfd0bc;hb=3683bbbe90156d2a9ab32de08099e094a446e5f8;hp=30946f248c7acbd625c595e6672fdcfa58b7dd04;hpb=4fcf5c6436d34bdc44bc534d21d9ec95bf072333;p=rocksndiamonds.git diff --git a/src/libgame/sound.c b/src/libgame/sound.c index 30946f24..9b0282bc 100644 --- a/src/libgame/sound.c +++ b/src/libgame/sound.c @@ -1770,17 +1770,22 @@ struct FileInfo *getCurrentSoundList() return sound_info->file_list; } -void InitSoundList(struct ConfigInfo *config_list, +void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, struct ConfigInfo *config_suffix_list, - int num_file_list_entries) + char **base_prefixes, + char **ext1_suffixes, + char **ext2_suffixes) { int i; sound_info = checked_calloc(sizeof(struct ArtworkListInfo)); - sound_info->type = ARTWORK_TYPE_SOUNDS; + /* ---------- initialize file list and suffix lists ---------- */ + sound_info->num_file_list_entries = num_file_list_entries; + sound_info->num_dynamic_file_list_entries = 0; + sound_info->num_suffix_list_entries = 0; for (i=0; config_suffix_list[i].token != NULL; i++) sound_info->num_suffix_list_entries++; @@ -1788,14 +1793,40 @@ void InitSoundList(struct ConfigInfo *config_list, sound_info->file_list = getFileListFromConfigList(config_list, config_suffix_list, num_file_list_entries); + sound_info->dynamic_file_list = NULL; + sound_info->suffix_list = config_suffix_list; - sound_info->custom_setup_list = NULL; + + /* ---------- initialize base prefix and suffixes lists ---------- */ + + sound_info->num_base_prefixes = 0; + for (i=0; base_prefixes[i] != NULL; i++) + sound_info->num_base_prefixes++; + + sound_info->num_ext1_suffixes = 0; + for (i=0; ext1_suffixes[i] != NULL; i++) + sound_info->num_ext1_suffixes++; + + sound_info->num_ext2_suffixes = 0; + for (i=0; ext2_suffixes[i] != NULL; i++) + sound_info->num_ext2_suffixes++; + + sound_info->base_prefixes = base_prefixes; + sound_info->ext1_suffixes = ext1_suffixes; + sound_info->ext2_suffixes = ext2_suffixes; + + /* ---------- initialize artwork reference and content lists ---------- */ + + sound_info->sizeof_artwork_list_entry = sizeof(SoundInfo *); sound_info->artwork_list = checked_calloc(num_file_list_entries * sizeof(SoundInfo *)); + sound_info->dynamic_artwork_list = NULL; sound_info->content_list = NULL; + /* ---------- initialize artwork loading/freeing functions ---------- */ + sound_info->load_artwork = Load_WAV; sound_info->free_artwork = FreeSound; @@ -1884,7 +1915,7 @@ void LoadCustomMusic(void) { num_music++; Music = checked_realloc(Music, num_music * sizeof(MusicInfo *)); - Music[num_music -1] = mus_info; + Music[num_music - 1] = mus_info; } } @@ -2011,6 +2042,7 @@ static void ReloadCustomSounds() printf("DEBUG: reloading sounds '%s' ...\n", artwork.snd_current_identifier); #endif + LoadArtworkConfig(sound_info); ReloadCustomArtworkList(sound_info); } @@ -2023,19 +2055,20 @@ static void ReloadCustomMusic() LoadCustomMusic(); } -void InitReloadSounds(char *set_identifier) +void InitReloadCustomSounds(char *set_identifier) { if (!audio.sound_available) return; #if defined(AUDIO_UNIX_NATIVE) + LoadArtworkConfig(sound_info); /* also load config on sound client */ WriteReloadInfoToPipe(set_identifier, SND_CTRL_RELOAD_SOUNDS); #else ReloadCustomSounds(); #endif } -void InitReloadMusic(char *set_identifier) +void InitReloadCustomMusic(char *set_identifier) { if (!audio.music_available) return; @@ -2095,7 +2128,7 @@ void FreeMusic(MusicInfo *music) void FreeAllSounds() { - FreeCustomArtworkList(sound_info); + FreeCustomArtworkLists(sound_info); } void FreeAllMusic()