public Dictionary <AvailablePart, PartPurchasability> GetPartsWithPurchasability() { var res = new Dictionary <AvailablePart, PartPurchasability>(); if (ResearchAndDevelopment.Instance == null) { return(res); } foreach (ConfigNode pNode in ShipNode.GetNodes("PART")) { string partName = Utilities.GetPartNameFromNode(pNode); AvailablePart part = PartLoader.getPartInfoByName(partName); if (res.TryGetValue(part, out PartPurchasability pp)) { pp.PartCount++; } else { PurchasabilityStatus status = PurchasabilityStatus.Unavailable; if (Utilities.PartIsUnlocked(part)) { status = PurchasabilityStatus.Purchased; } else if (ResearchAndDevelopment.GetTechnologyState(part.TechRequired) == RDTech.State.Available) { status = PurchasabilityStatus.Purchasable; } res.Add(part, new PartPurchasability(status, 1)); } } return(res); }
public PartPurchasability(PurchasabilityStatus status, int partCount) { Status = status; PartCount = partCount; }