public void Init() { const string file = "..\\..\\testdata\\simple.cfg"; var parser = new Parser(); _kerbalConfig = parser.ParseConfig(file); }
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); }
public abstract void LoadTree(KerbalConfig config, TechTreeViewModel treeData);
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"; }
public void TearDown() { _testPart = null; _parser = null; _cfg = null; }
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; }
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"; }