Esempio n. 1
0
        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;
        }