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)); } }
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; } }
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; }
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; }