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));
                    }
                }
            }
        }
Esempio n. 2
0
 public abstract void PopulateParts(PartCollectionViewModel pc, TechTreeViewModel ttvm);