public void CapsulePropertiesAreParsedCorrectly() { var properties = _cfg.First().Values; var tech = properties["TechRequired"]; var cost = properties["cost"]; Assert.AreEqual("commandModules", tech, $"Part tech is {tech}"); Assert.AreEqual("4400", cost, $"Part cost is {cost}"); }
public void BracketPositions() { var node = _kerbalConfig.First(); Console.Write(node); Console.WriteLine(); Assert.AreEqual(4, node.Values.Count); Assert.AreEqual(4, node.Children.Count); Assert.IsTrue( node.Values.ContainsKey("name"), "Expected key \"name\" wasn't found." ); var childOne = node.Children[0]; var childTwo = node.Children[1]; var childThree = node.Children[2]; var childFour = node.Children[3]; Console.Write(childOne); Console.WriteLine(); Assert.AreEqual(3, childOne.Values.Count); Assert.IsTrue( childOne.Values.ContainsKey("name"), "Expected key \"name\" wasn't found." ); Console.Write(childTwo); Console.WriteLine(); Assert.AreEqual(2, childTwo.Values.Count); Assert.IsTrue( childTwo.Values.ContainsKey("amount"), "Expected key \"amount\" wasn't found." ); Console.Write(childThree); Console.WriteLine(); Assert.AreEqual(1, childThree.Values.Count); Assert.IsTrue( childThree.Values.ContainsKey("name"), "Expected key \"name\" wasn't found." ); Console.Write(childFour); Console.WriteLine(); Assert.AreEqual(0, childFour.Values.Count); }
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 void SimpleParse() { var node = _kerbalConfig.First(); Assert.AreEqual(24, node.Values.Count); Assert.AreEqual(2, node.Children.Count); var childOne = node.Children[0]; var childTwo = node.Children[1]; Console.Write(childOne); Console.WriteLine(); Assert.AreEqual(3, childOne.Values.Count); Console.Write(childTwo); Console.WriteLine(); Assert.AreEqual(2, childTwo.Values.Count); }
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 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"; }