private static void HandleTrackAddition(string trackName, string modDirName, TrackConfig config) { if (!IsTrackNameAvailable(modDirName + "_" + trackName)) { Debug.LogError("unable to load track: " + trackName + " from config: " + modDirName + "! TrackName is already in use."); return; } AudioHandlerPatcher.OnCustomTrackAddition(new CustomMusicLoadSpec { trackName = trackName, modDirName = modDirName, audioType = config.audioType, filePath = config.filePath, callback = OnCustomTrackLoaded }); }
private static void HandleTrackChanged(string trackName, string modDirName, TrackConfig config) { if (IsTrackNameAvailable(modDirName + "_" + trackName)) { Debug.LogWarning("detected track-change in config for mod: " + modDirName + " track: " + trackName + " but track didn't previously (mis-detected addition as change?)"); } AudioHandlerPatcher.OnCustomTrackChanged(new CustomMusicLoadSpec { trackName = trackName, modDirName = modDirName, audioType = config.audioType, filePath = config.filePath, callback = OnCustomTrackLoaded }); }
internal static MusicLoadResult AddMusic(string trackName, AudioClip clip) { if (clip == null) { throw new ArgumentNullException(nameof(clip)); } if (!IsTrackNameAvailable(trackName)) { return(MusicLoadResult.DuplicateTrackName); } customMusic[trackName] = clip; AudioHandlerPatcher.OnClipAddition(trackName, clip); return(MusicLoadResult.Success); }
private static void ReloadConfig() { if (trackConfig == null) { trackConfig = BTConfigUtils.LoadConfigFile(configPath, trackConfig); if (trackConfig != null) { // on first load every track is "new" IEnumerable <KeyValuePair <string, TrackConfig> > newTracks = trackConfig.trackList.Where(entry => !string.IsNullOrEmpty(entry.Value.filePath)); foreach ((string key, TrackConfig value) in newTracks) { AudioHandlerPatcher.OnTrackAddition(key, value); } } } else { // otherwise memorize current tracks and call events selectively Dictionary <string, string> previousData = trackConfig.trackList .ToDictionary(entry => entry.Key, entry => entry.Value.filePath); trackConfig = BTConfigUtils.LoadConfigFile(configPath, trackConfig); if (trackConfig != null) { IEnumerable <KeyValuePair <string, TrackConfig> > newTracks = trackConfig.trackList .Where(entry => !previousData.ContainsKey(entry.Key) && !string.IsNullOrEmpty(entry.Value.filePath)); foreach ((string key, TrackConfig value) in newTracks) { AudioHandlerPatcher.OnTrackAddition(key, value); } IEnumerable <KeyValuePair <string, TrackConfig> > tracksWithChangedFilePath = trackConfig.trackList .Where(entry => previousData.ContainsKey(entry.Key) && !string.IsNullOrEmpty(entry.Value.filePath) && !previousData[entry.Key].Equals(entry.Value.filePath)); foreach ((string key, TrackConfig value) in tracksWithChangedFilePath) { AudioHandlerPatcher.OnTrackChanged(key, value); } } } nextConfigCheckIn = 30f; }