public override void PopulateParts(PartCollectionViewModel pc, TechTreeViewModel ttvm) { // Add all part in node foreach (var node in ttvm.TechTree) { foreach (var part in pc.PartCollection) { if (part.TechRequired == node.Id) { node.TechNode.Parts.Add(part.PartName); } } } // Create and init part table with name => partviewmodel var partTable = new Dictionary <string, PartViewModel>(); foreach (PartViewModel part in pc.PartCollection) { try { if (!partTable.ContainsKey(part.PartName)) { partTable.Add(part.PartName, part); } else { var duplicate = partTable[part.PartName]; var existString = String.Format(" - Existing part: {0} ({1})", duplicate.PartName, duplicate.FileName); Logger.Error("PartLoader: Error while storing part \"{0}\" " + "({1}) into PartCollection - {2}{3}", part.PartName, part.FileName, "Part already exists", existString); } } catch (Exception e) { Logger.Error("StockTechTreeLoader.PopulateParts: " + "PartLoader: Error while storing part \"{0}\" " + "({1}) into PartCollection - {2}", part.PartName, part.FileName, e.Message); } } foreach (var node in ttvm.TechTree) { foreach (String part in node.TechNode.Parts) { if (partTable.ContainsKey(part)) { node.Parts.Add(partTable[part]); pc.PartCollection.Remove(partTable[part]); } else { var tmpPart = new Part(part) { Title = part, TechRequired = node.Id, Category = "(Unknown)" }; node.Parts.Add(new PartViewModel(tmpPart)); } } } }
public abstract void PopulateParts(PartCollectionViewModel pc, TechTreeViewModel ttvm);