public static void Load(bool changesOnly = false) { List <string> aicConfigurationList = null; List <string> aivConfigurationList = null; List <string> resourceConfigurationList = null; List <string> startTroopConfigurationList = null; if (File.Exists(ConfigFile)) { using (StreamReader sr = new StreamReader(ConfigFile)) { string line; while ((line = sr.ReadLine()) != null) { if (Regex.Replace(@"\s+", "", line).Contains("aic_")) { if (aicConfigurationList == null) { aicConfigurationList = new List <string>(); } aicConfigurationList.Add(line); continue; } else if (Regex.Replace(@"\s+", "", line).StartsWith("aiv_")) { if (aivConfigurationList == null) { aivConfigurationList = new List <string>(); } aivConfigurationList.Add(line); continue; } else if (Regex.Replace(@"\s+", "", line).StartsWith("res_")) { if (resourceConfigurationList == null) { resourceConfigurationList = new List <string>(); } resourceConfigurationList.Add(line); continue; } else if (Regex.Replace(@"\s+", "", line).StartsWith("s_")) { if (startTroopConfigurationList == null) { startTroopConfigurationList = new List <string>(); } startTroopConfigurationList.Add(line); continue; } string[] changeLine = line.Split(new char[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries).Select(str => str.Trim()).ToArray(); if (changeLine.Length < 2) { continue; } string changeKey = changeLine[0]; string changeSetting = changeLine[1]; if (!changesOnly) { if (changeKey == "Path") { Configuration.Path = changeSetting; } else if (changeKey == "Language") { if (int.TryParse(changeSetting, out int result)) { Configuration.Language = result; } } } if (changeKey == "Path" || changeKey == "Language") { continue; } Change change = Version.Changes.Find(c => c.TitleIdent == changeKey); if (change == null) { continue; } int numChanges = changeSetting.Count(ch => ch == '='); string[] changes = changeSetting.Split(new char[] { '}' }, numChanges, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < numChanges; i++) { string headerKey = changes[i].Split('=')[0].Replace(" ", "").Replace("{", String.Empty); string headerValue = changes[i].Split('=')[1].Replace(" ", "").Replace("{", String.Empty).Replace("}", String.Empty); DefaultHeader header = change.FirstOrDefault(c => c.DescrIdent == headerKey); header.LoadValueString(headerValue); } } } } AICChange.LoadConfiguration(aicConfigurationList); AIVChange.LoadConfiguration(aivConfigurationList); ResourceChange.LoadConfiguration(resourceConfigurationList); StartTroopChange.LoadConfiguration(startTroopConfigurationList); }
public static void LoadChanges() { loading = true; if (File.Exists(ConfigFile)) { using (StreamReader sr = new StreamReader(ConfigFile)) { string line; while ((line = sr.ReadLine()) != null) { int index = line.IndexOf('='); if (index < 0) { continue; } // change string changeStr = line.Remove(index).Trim(); Change change = Version.Changes.Find(c => c.TitleIdent == changeStr); if (change == null) { continue; } int startIndex = line.IndexOf('{', index + 1); if (startIndex < 0) { continue; } startIndex++; int endIndex = line.LastIndexOf('}'); if (endIndex < 0) { continue; } // headers while (true) { index = line.IndexOf('=', startIndex); if (index < 0) { break; } string headerStr = line.Substring(startIndex, index - startIndex).Trim(); startIndex = index + 1; DefaultHeader header = change.FirstOrDefault(c => c.DescrIdent == headerStr); if (header == null) { continue; } startIndex = line.IndexOf('{', startIndex); if (startIndex < 0) { break; } index = startIndex + 1; startIndex = line.IndexOf('}', index); if (startIndex < 0 || startIndex == endIndex) { break; } header.LoadValueString(line.Substring(index, startIndex - index)); startIndex++; } } } } loading = false; }