public abstract TreeSaver SaveParts(TechNodeViewModel node);
public ConnectionViewModel(TechNodeViewModel startNodeViewModel, TechNodeViewModel endNodeViewModel) { _startNodeViewModel = startNodeViewModel; _endNodeViewModel = endNodeViewModel; }
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 override TreeSaver SaveParts(TechNodeViewModel node) { return(this); }