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); } }
/** * Method for remove a part in node and add the par in partcatalog. * Status: OK */ public void RemovePartFromNode(PartViewModel part, TechNodeViewModel node) { node.RemovePart(part); PartCollection.Add(part); }
/** * Method for remove a part in node and add the par in partcatalog. * Status: OK */ public void RemovePartFromNode(PartViewModel part, TechNodeViewModel node) { node.RemovePart(part); PartCollection.Add(part); }
/** * Method for add a part in node and remove the par in partcatalog. * Status: OK */ public void AddPartToNode(PartViewModel part, TechNodeViewModel node) { node.AddPart(part); PartCollection.Remove(part); }
public TechNodeViewModel AddNode(Point pos) { var node = new TechNode(GenerateNodeName()) { Pos = pos }; var nodeViewModel = new TechNodeViewModel { TechNode = node }; TechTree.Add(nodeViewModel); return nodeViewModel; }
/** * Method for add a part in node and remove the par in partcatalog. * Status: OK */ public void AddPartToNode(PartViewModel part, TechNodeViewModel node) { node.AddPart(part); PartCollection.Remove(part); }
public void DeleteNode(TechNodeViewModel node) { WorkspaceViewModel.SelectedNode = null; TechTree.Remove(node); UnlinkParent(node); var parts = new PartViewModel[node.Parts.Count]; node.Parts.CopyTo(parts, 0); foreach (var part in parts) { PartCollectionViewModel.RemovePartFromNode(part, node); } LinkNodes(); }
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 RemoveParent(TechNodeViewModel parent) { Parents.Remove(parent); TechNode.Parents.Remove(parent.TechNode); }
public void AddParent(TechNodeViewModel parent) { Parents.Add(parent); TechNode.Parents.Add(parent.TechNode); }
public abstract TreeSaver SaveParts(TechNodeViewModel node);
public abstract TreeSaver SaveParts(TechNodeViewModel node);
public override TreeSaver SaveParts(TechNodeViewModel node) { foreach (var part in node.Parts) { _partsBuffer.Add("@PART[" + part.PartName + "]:FINAL"); _partsBuffer.Add("{"); IndentationLevel++; _partsBuffer.Add("@TechRequired = " + node.TechId); IndentationLevel--; _partsBuffer.Add("}"); } return this; }
public void AddParent(TechNodeViewModel parent) { Parents.Add(parent); TechNode.Parents.Add(parent.TechNode); }
//TODO: Remove this terrible terrible method and replace with proper //MVVM model-viewmodel dependencies. public void UnlinkParent(TechNodeViewModel parentToRemove) { foreach (var node in TechTree) { if (node.Parents.Contains(parentToRemove)) { node.RemoveParent(parentToRemove); } } }
public void RemoveParent(TechNodeViewModel parent) { Parents.Remove(parent); TechNode.Parents.Remove(parent.TechNode); }
public override TreeSaver SaveParts(TechNodeViewModel node) { foreach (var part in node.Parts) { AddLine("part = " + part.PartName); } return this; }