private T LoadConfigFile <T>(string fileName, T instance)
    {
        String filePath = (BTConfigHolder.basePath + fileName).Replace('/', Path.DirectorySeparatorChar);

        if (!File.Exists(filePath))
        {
            return(default(T));
        }

        try {
            using (StreamReader reader = File.OpenText(filePath)){
                if (instance == null)
                {
                    return(BTConfigUtils.LoadConfig <T>(reader));
                }
                else
                {
                    BTConfigUtils.LoadConfig <T>(reader, instance);
                    return(instance);
                }
            }
        }catch (Exception e) {
            this.LogMessage(LogType.Error, "Encountered an exception during parsing of the file `" + fileName + "`!\nException: " + e.ToString());
            return(default(T));
        }
    }
示例#2
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;
        }
    private void LoadHackConfig()
    {
        if (!AreHacksEnabled())
        {
            hackConfig = null;
            return;
        }

        try{
            using (StreamReader reader = File.OpenText((basePath + hackConfigFileName).Replace('/', Path.DirectorySeparatorChar))){
                hackConfig = BTConfigUtils.LoadConfig <BTHackConfig>(reader);
            }
        }catch (Exception e) {
            LogMessage(LogType.Error, "Encountered an exception during parsing of the hackConfig!\nException: " + e.ToString());
            hackConfig = null;
        }
    }
示例#4
0
        private static void FirstLoadConfig()
        {
            foreach (string modDirName in FindCustomMusicConfigs())
            {
                TracksConfig config = BTConfigUtils.LoadConfigFile(configBasePath + modDirName + ".cs", (TracksConfig)null);
                if (config == null)
                {
                    continue;
                }

                customTrackConfigs[modDirName] = config;
                foreach ((string trackName, TrackConfig trackConfig) in config.trackList.Where(entry => !string.IsNullOrEmpty(entry.Value.filePath)))
                {
                    HandleTrackAddition(trackName, modDirName, trackConfig);
                }
            }

            nextConfigCheckIn = 30f;
        }
示例#5
0
        private static void ReloadConfig()
        {
            // store current config to identify changes
            // as mapping of modName->trackName->filePath
            Dictionary <string, Dictionary <string, string> > previousConfig = customTrackConfigs
                                                                               .ToDictionary(
                modConfig => modConfig.Key,
                modConfig => modConfig.Value.trackList
                .ToDictionary(track => track.Key, track => track.Value.filePath)
                );

            foreach (string modDirName in FindCustomMusicConfigs())
            {
                Dictionary <string, string> previousModData = previousConfig.ContainsKey(modDirName) ? previousConfig[modDirName] : null;
                TracksConfig config = BTConfigUtils.LoadConfigFile(configBasePath + modDirName + ".cs", (TracksConfig)null);
                if (config == null)
                {
                    continue;
                }

                customTrackConfigs[modDirName] = config;
                foreach ((string trackName, TrackConfig trackConfig) in config.trackList.Where(entry => !string.IsNullOrEmpty(entry.Value.filePath)))
                {
                    if (previousModData == null || !previousModData.ContainsKey(trackName))
                    {
                        // new track
                        HandleTrackAddition(trackName, modDirName, trackConfig);
                    }
                    else if (!previousModData[trackName].Equals(trackConfig.filePath))
                    {
                        // track changed filePath
                        HandleTrackChanged(trackName, modDirName, trackConfig);
                    }
                }
            }

            nextConfigCheckIn = 30f;
        }
 private static void ReloadConfig()
 {
     config            = BTConfigUtils.LoadConfigFile(configPath, config);
     nextConfigCheckIn = config?.fileCheckInterval ?? 30f;
 }