Beispiel #1
0
        public void Init()
        {
            const string file   = "..\\..\\testdata\\simple.cfg";
            var          parser = new Parser();

            _kerbalConfig = parser.ParseConfig(file);
        }
Beispiel #2
0
        public void Setup()
        {
            _testPart = "..\\..\\testdata\\capsule.cfg";
            _parser   = new Parser(false, true);

            _cfg = _parser.ParseConfig(_testPart);
        }
        /**
         * Method for load tree
         * Status: OK
         * Note: if you add a new treeLoader, update the switch...
         */
        public void LoadTree(string path, TreeType treeType = TreeType.StockTechTree)
        {
            ResetTree();

            if (_treeData == null)
            {
                return;
            }
            var parser = new Parser();

            _config = parser.ParseConfig(path);
            switch (treeType)
            {
            case TreeType.StockTechTree:
                _treeLoader = new StockTechTreeLoader();
                break;

            case TreeType.YongeTech:
                _treeLoader = new YongeTechTreeLoader();
                break;

            default:
                throw new Exception("The techtree's file format is not reconized !");
            }
            _treeLoader.LoadTree(_config, _treeData);
            _treeData.LinkNodes();
            _treeData.WorkspaceViewModel.StatusBarText = "Tree Loaded";
        }
        public override void LoadTree(KerbalConfig config, TechTreeViewModel treeData)
        {
            var nameNodeHashtable = new Dictionary <string, TechNodeViewModel>();
            var techNodes         = config.First(child => child.Name == "TechTree").Children.Where(node => node.Name == "RDNode").ToArray();

            foreach (KerbalNode node in techNodes.Where(kerbalNode => kerbalNode.Values.ContainsKey("nodeName")))
            {
                var v  = node.Values;
                var id = v["id"].First();
                TechNodeViewModel techNodeViewModel;
                if (nameNodeHashtable.ContainsKey(id))
                {
                    techNodeViewModel = nameNodeHashtable[id];
                }
                else
                {
                    techNodeViewModel = new TechNodeViewModel();
                    nameNodeHashtable.Add(id, techNodeViewModel);
                }
                techNodeViewModel.TechNode = this.PopulateFromSource(node);

                // Find parent
                foreach (KerbalNode parentNode in node.Children.Where(child => child.Name == "Parent"))
                {
                    var parentKeyValuePairs = parentNode.Values.Where(pair => pair.Key == "parentID");
                    var parents             = new List <string>();
                    foreach (var parentKeyValuePair in parentKeyValuePairs)
                    {
                        parents.Add(parentKeyValuePair.Value.First());
                    }
                    foreach (var parent in parents.Where(parent => !nameNodeHashtable.ContainsKey(parent)))
                    {
                        nameNodeHashtable.Add(parent, new TechNodeViewModel());
                    }
                    foreach (var parent in parents.Where(parent => !String.IsNullOrEmpty(parent) && nameNodeHashtable.ContainsKey(parent)))
                    {
                        techNodeViewModel.Parents.Add(nameNodeHashtable[parent]);
                    }
                }
                treeData.TechTree.Add(techNodeViewModel);
            }
        }
        public override void LoadTree(KerbalConfig config, TechTreeViewModel treeData)
        {
            var nameNodeHashtable = new Dictionary<string, TechNodeViewModel>();
            var techNodes = config.First(child => child.Name == "TechTree").Children.Where(node => node.Name == "RDNode").ToArray();

            foreach (KerbalNode node in techNodes.Where(kerbalNode => kerbalNode.Values.ContainsKey("nodepart")))
            {
                var v = node.Values;
                var id = v["id"].First();
                TechNodeViewModel techNodeViewModel;
                if (nameNodeHashtable.ContainsKey(id))
                {
                    techNodeViewModel = nameNodeHashtable[id];
                }
                else
                {
                    techNodeViewModel = new TechNodeViewModel();
                    nameNodeHashtable.Add(id, techNodeViewModel);
                }
                techNodeViewModel.TechNode = this.PopulateFromSource(node);

                // Find parent
                foreach (KerbalNode parentNode in node.Children.Where(child => child.Name == "Parent"))
                {
                    var parentKeyValuePairs = parentNode.Values.Where(pair => pair.Key == "parentID");
                    var parents = new List<string>();
                    foreach (var parentKeyValuePair in parentKeyValuePairs)
                    {
                        parents.Add(parentKeyValuePair.Value.First());
                    }
                    foreach (var parent in parents.Where(parent => !nameNodeHashtable.ContainsKey(parent)))
                    {
                        nameNodeHashtable.Add(parent, new TechNodeViewModel());
                    }
                    foreach (var parent in parents.Where(parent => !String.IsNullOrEmpty(parent) && nameNodeHashtable.ContainsKey(parent)))
                    {
                        techNodeViewModel.Parents.Add(nameNodeHashtable[parent]);
                    }
                }
                treeData.TechTree.Add(techNodeViewModel);
            }
        }
        public List <KerbalNode> LoadParts()
        {
            var partlist = new List <KerbalNode>();
            var filter   = new List <string> {
                "PART"
            };
            var parser = new Parser(filter, false, true);

            foreach (var file in Directory.GetFiles("*.cfg", SearchOption.AllDirectories))
            {
                OnProgress();
                KerbalConfig parts = null;
                try
                {
                    parts = parser.ParseConfig(file.FullName);
                }
                catch (Exception e)
                {
                    Logger.Error(e.Message);
                }
                if (parts == null || parts.Count < 1)
                {
                    continue;
                }
                foreach (var p in parts.Where(
                             p => !partlist.Contains(p) &&
                             p.Name == "PART"))
                {
                    if (!p.Values.ContainsKey("name"))
                    {
                        continue;
                    }

                    var part = new Part(p.Values["name"].First());
                    part.PopulateFromSource(p);
                    part.FileName = file.FullName;
                    _parts.Add(part);
                }
            }
            Logger.Log("Loaded {0} parts from {1}", _parts.Count, Directory);
            return(partlist);
        }
Beispiel #7
0
 public abstract void LoadTree(KerbalConfig config, TechTreeViewModel treeData);
Beispiel #8
0
 public void CleanUp()
 {
     _kerbalConfig = null;
 }
        /**
         * Method for load tree
         * Status: OK
         * Note: if you add a new treeLoader, update the switch...
         */
        public void LoadTree(string path, TreeType treeType = TreeType.StockTechTree)
        {
            ResetTree();

            if (_treeData == null)
            {
                return;
            }
            var parser = new Parser();
            _config = parser.ParseConfig(path);
            switch (treeType)
            {
                case TreeType.StockTechTree:
                    _treeLoader = new StockTechTreeLoader();
                    break;
                case TreeType.YongeTech:
                    _treeLoader = new YongeTechTreeLoader();
                    break;
                default:
                    throw new Exception("The techtree's file format is not reconized !");

            }
            _treeLoader.LoadTree(_config, _treeData);
            _treeData.LinkNodes();
            _treeData.WorkspaceViewModel.StatusBarText = "Tree Loaded";
        }
Beispiel #10
0
        public void LoadTree(string path, TreeType treeType = TreeType.TechMananger)
        {
            ResetTree();

            var nameNodeHashtable = new Dictionary <string, TechNodeViewModel>();

            if (_treeData == null)
            {
                return;
            }

            _config = ParseTree(path);

            switch (treeType)
            {
            case TreeType.TechMananger:
                var techNodes =
                    _config.
                    First(
                        child =>
                        child.Name == "TECHNOLOGY_TREE_DEFINITION").
                    Children.Where(node => node.Name == "NODE").
                    ToArray();

                foreach (var node in
                         techNodes.Where(
                             kerbalNode =>
                             kerbalNode.Values.ContainsKey("name")))
                {
                    var v    = node.Values;
                    var name = v["name"].First();
                    TechNodeViewModel techNodeViewModel;

                    if (nameNodeHashtable.ContainsKey(name))
                    {
                        techNodeViewModel = nameNodeHashtable[name];
                    }
                    else
                    {
                        techNodeViewModel = new TechNodeViewModel();
                        nameNodeHashtable.Add(name, techNodeViewModel);
                    }

                    techNodeViewModel.TechNode.PopulateFromSource(node);

                    if (v.ContainsKey("parents"))
                    {
                        var parentsString = v["parents"].First();
                        var parents       = parentsString.Split(',');

                        foreach (var parent
                                 in parents.
                                 Where(
                                     parent =>
                                     !nameNodeHashtable.ContainsKey(parent)))
                        {
                            nameNodeHashtable.Add(parent, new TechNodeViewModel());
                        }

                        foreach (var parent
                                 in parents
                                 .Where(
                                     parent => !String.IsNullOrEmpty(parent) &&
                                     nameNodeHashtable.
                                     ContainsKey(parent)))
                        {
                            techNodeViewModel.Parents.Add(nameNodeHashtable[parent]);
                        }
                    }

                    _treeData.TechTree.Add(techNodeViewModel);
                }
                break;

            case TreeType.ATC:
                var atcNodes =
                    _config.First(child => child.Name == "TECH_TREE").
                    Children.Where(node => node.Name == "TECH_NODE").
                    ToArray();

                foreach (var node in
                         atcNodes.Where(
                             kerbalNode =>
                             kerbalNode.Values.ContainsKey("name")))
                {
                    var v    = node.Values;
                    var name = v["name"].First();
                    TechNodeViewModel techNodeViewModel;

                    if (nameNodeHashtable.ContainsKey(name))
                    {
                        techNodeViewModel = nameNodeHashtable[name];
                    }
                    else
                    {
                        techNodeViewModel = new TechNodeViewModel();
                        nameNodeHashtable.Add(name, techNodeViewModel);
                    }

                    techNodeViewModel.TechNode.PopulateFromSource(node, TreeType.ATC);

                    foreach (var parentNode in node.Children.Where(child => child.Name == "PARENT_NODE"))
                    {
                        var parentKeyValuePairs = parentNode.Values.Where(pair => pair.Key == "name");
                        var parents             = new List <string>();
                        foreach (var parentKeyValuePair in parentKeyValuePairs)
                        {
                            parents.Add(parentKeyValuePair.Value.First());
                        }

                        foreach (var parent
                                 in parents.
                                 Where(
                                     parent =>
                                     !nameNodeHashtable.ContainsKey(parent)))
                        {
                            nameNodeHashtable.Add(parent, new TechNodeViewModel());
                        }

                        foreach (var parent
                                 in parents
                                 .Where(
                                     parent => !String.IsNullOrEmpty(parent) &&
                                     nameNodeHashtable.
                                     ContainsKey(parent)))
                        {
                            techNodeViewModel.Parents.Add(nameNodeHashtable[parent]);
                        }
                    }

                    _treeData.TechTree.Add(techNodeViewModel);
                }
                break;
            }

            _treeData.LinkNodes();
            _treeData.WorkspaceViewModel.StatusBarText = "Tree Loaded";
        }
Beispiel #11
0
 public void TearDown()
 {
     _testPart = null;
     _parser   = null;
     _cfg      = null;
 }
Beispiel #12
0
        public KerbalConfig ParseConfig(String configFile)
        {
            _lineNumber = 0;
            _currentLine = null;
            _configFile = configFile;
            _skipDepth = -1;

            var kerbalConfig = new KerbalConfig(configFile);

            var sr = new StreamReader(configFile);

            try
            {
                var kerbalRoot = ParseTree(sr);

                // Not a headless file - Split children into separate trees
                if (kerbalRoot.Values.Count == 0)
                {
                    foreach (var tree in kerbalRoot.Children)
                    {
                        kerbalConfig.Add(tree);
                    }
                }
                else if (_filters == null ||
                         _filters.Contains(kerbalRoot.Name))
                {
                    // Headless file (unless filtered out)
                    kerbalConfig.Add(kerbalRoot);
                }
            }
            catch (ParseErrorException e)
            {
                throw new ParseErrorException(
                    e.Message + "\nFile: " +
                    kerbalConfig.FileName);
            }

            return kerbalConfig;
        }
Beispiel #13
0
 public abstract void LoadTree(KerbalConfig config, TechTreeViewModel treeData);
 public void Init()
 {
     const string file = "..\\..\\testdata\\simple.cfg";
     var parser = new Parser();
     _kerbalConfig = parser.ParseConfig(file);
 }
 public void CleanUp()
 {
     _kerbalConfig = null;
 }
        public void LoadTree(string path, TreeType treeType = TreeType.TechMananger)
        {
            ResetTree();

            var nameNodeHashtable = new Dictionary<string, TechNodeViewModel>();

            if (_treeData == null)
            {
                return;
            }

            _config = ParseTree(path);

            switch (treeType)
            {
                case TreeType.TechMananger:
                    var techNodes =
                        _config.
                            First(
                                  child =>
                                  child.Name == "TECHNOLOGY_TREE_DEFINITION").
                            Children.Where(node => node.Name == "NODE").
                            ToArray();

                    foreach (var node in
                        techNodes.Where(
                                        kerbalNode =>
                                        kerbalNode.Values.ContainsKey("name")))
                    {
                        var v = node.Values;
                        var name = v["name"].First();
                        TechNodeViewModel techNodeViewModel;

                        if (nameNodeHashtable.ContainsKey(name))
                        {
                            techNodeViewModel = nameNodeHashtable[name];
                        }
                        else
                        {
                            techNodeViewModel = new TechNodeViewModel();
                            nameNodeHashtable.Add(name, techNodeViewModel);
                        }

                        techNodeViewModel.TechNode.PopulateFromSource(node);

                        if (v.ContainsKey("parents"))
                        {
                            var parentsString = v["parents"].First();
                            var parents = parentsString.Split(',');

                            foreach (var parent
                                in parents.
                                    Where(
                                          parent =>
                                          !nameNodeHashtable.ContainsKey(parent)))
                            {
                                nameNodeHashtable.Add(parent, new TechNodeViewModel());
                            }

                            foreach (var parent
                                in parents
                                    .Where(
                                           parent => !String.IsNullOrEmpty(parent) &&
                                                     nameNodeHashtable.
                                                         ContainsKey(parent)))
                            {
                                techNodeViewModel.Parents.Add(nameNodeHashtable[parent]);
                            }
                        }

                        _treeData.TechTree.Add(techNodeViewModel);
                    }
                    break;

                case TreeType.ATC:
                    var atcNodes =
                        _config.First(child => child.Name == "TECH_TREE").
                                Children.Where(node => node.Name == "TECH_NODE").
                                ToArray();

                    foreach (var node in
                        atcNodes.Where(
                                       kerbalNode =>
                                       kerbalNode.Values.ContainsKey("name")))
                    {
                        var v = node.Values;
                        var name = v["name"].First();
                        TechNodeViewModel techNodeViewModel;

                        if (nameNodeHashtable.ContainsKey(name))
                        {
                            techNodeViewModel = nameNodeHashtable[name];
                        }
                        else
                        {
                            techNodeViewModel = new TechNodeViewModel();
                            nameNodeHashtable.Add(name, techNodeViewModel);
                        }

                        techNodeViewModel.TechNode.PopulateFromSource(node, TreeType.ATC);

                        foreach (var parentNode in node.Children.Where(child => child.Name == "PARENT_NODE"))
                        {
                            var parentKeyValuePairs = parentNode.Values.Where(pair => pair.Key == "name");
                            var parents = new List<string>();
                            foreach (var parentKeyValuePair in parentKeyValuePairs)
                            {
                                parents.Add(parentKeyValuePair.Value.First());
                            }

                            foreach (var parent
                                in parents.
                                    Where(
                                          parent =>
                                          !nameNodeHashtable.ContainsKey(parent)))
                            {
                                nameNodeHashtable.Add(parent, new TechNodeViewModel());
                            }

                            foreach (var parent
                                in parents
                                    .Where(
                                           parent => !String.IsNullOrEmpty(parent) &&
                                                     nameNodeHashtable.
                                                         ContainsKey(parent)))
                            {
                                techNodeViewModel.Parents.Add(nameNodeHashtable[parent]);
                            }
                        }

                        _treeData.TechTree.Add(techNodeViewModel);
                    }
                    break;
            }

            _treeData.LinkNodes();
            _treeData.WorkspaceViewModel.StatusBarText = "Tree Loaded";
        }