Beispiel #1
0
        public void Load(string path)
        {
            var emittersBySystem = new Dictionary <string, PartSysSpec>();

            using (var file = new FileStream(path, FileMode.Open))
            {
                var reader = new StreamReader(file, Encoding.ASCII);

                // Slurp in all lines, do a preliminary sorting by particle system name
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    var firstTab = line.IndexOf('\t');
                    if (firstTab == -1)
                    {
                        continue; // Not a valid line
                    }
                    var systemName = line.Substring(0, firstTab);
                    if (systemName.Length == 0)
                    {
                        continue; // Also probably not a valid line
                    }

                    // Trim it by removing the vertical tab at the end
                    systemName = systemName.Replace("\v", "");

                    var key = systemName.ToLowerInvariant();
                    if (!emittersBySystem.ContainsKey(key))
                    {
                        emittersBySystem[key] = new PartSysSpec
                        {
                            Name = systemName
                        };
                    }
                    emittersBySystem[key].Emitters.Add(EmitterSpec.Parse(line));
                }
            }

            // Sort by name ascending
            var list = emittersBySystem.Values.ToList();

            list.Sort();

            Specs = new ObservableCollection <PartSysSpec>(list);
        }