Example #1
0
        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);
        }
Example #2
0
 public PartPurchasability(PurchasabilityStatus status, int partCount)
 {
     Status    = status;
     PartCount = partCount;
 }