Exemple #1
0
        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
            });
        }
Exemple #2
0
        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
            });
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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;
        }