private void addExperimentalParts()
        {
            AvailablePart partToAdd = PartLoader.getPartInfoByName("MerillCamera");

            if (partToAdd != null && !ResearchAndDevelopment.IsExperimentalPart(partToAdd))
            {
                ResearchAndDevelopment.AddExperimentalPart(partToAdd);
            }
        }
 protected override void OnAccepted()
 {
     if (add)
     {
         foreach (AvailablePart part in parts)
         {
             ResearchAndDevelopment.AddExperimentalPart(part);
         }
     }
 }
Esempio n. 3
0
        private void addExperimentalParts()
        {
            AvailablePart ap = ExperimentFactory.getPartForExperiment(ExperimentFactory.KEMINI_EXPERIMENTS, experiment);

            if (ap != null && !ResearchAndDevelopment.PartModelPurchased(ap))
            {
                NE_Helper.log("Adding experimental part: " + ap.name);
                ResearchAndDevelopment.AddExperimentalPart(ap);
            }
        }
 protected void UnlockParts()
 {
     foreach (AvailablePart part in parts)
     {
         ProtoTechNode techNode = ResearchAndDevelopment.Instance.GetTechState(part.TechRequired);
         if (techNode == null || techNode.state != RDTech.State.Available)
         {
             ResearchAndDevelopment.AddExperimentalPart(part);
         }
     }
 }
        private static void ExperimentalPart(string partName, int count)
        {
            System.StartIgnoringEvents();

            var partInfo = PartLoader.getPartInfoByName(partName);

            if (partInfo != null)
            {
                var currentExperimentalParts = Traverse.Create(ResearchAndDevelopment.Instance).Field <Dictionary <AvailablePart, int> >("experimentalPartsStock").Value;

                if (currentExperimentalParts.TryGetValue(partInfo, out var currentCount))
                {
                    if (currentCount > count)
                    {
                        ResearchAndDevelopment.RemoveExperimentalPart(partInfo);
                    }
                    else if (currentCount < count)
                    {
                        ResearchAndDevelopment.AddExperimentalPart(partInfo);
                    }
                }
                else
                {
                    ResearchAndDevelopment.AddExperimentalPart(partInfo);
                }
            }

            //Refresh RD nodes in case we are in the RD screen
            if (RDController.Instance && RDController.Instance.partList)
            {
                RDController.Instance.partList.Refresh();
                RDController.Instance.UpdatePanel();
            }

            //Refresh the part list in case we are in the VAB/SPH
            if (EditorPartList.Instance)
            {
                EditorPartList.Instance.Refresh();
            }

            System.StopIgnoringEvents();
            LunaLog.Log($"Experimental part received part: {partName} count {count}");
        }
        private void addExperimentalPart(string sExperimentalPartName)
        {
            MerillData.log("accepted contract with experimental part: " + sExperimentalPartName);

            if (sExperimentalPartName != null)
            {
                AvailablePart experimentalPart = PartLoader.getPartInfoByName(sExperimentalPartName);

                MerillData.log("experimental part: " + experimentalPart + ", " + (experimentalPart == null ? "" : "" + ResearchAndDevelopment.IsExperimentalPart(experimentalPart)));
                if (experimentalPart != null && !ResearchAndDevelopment.IsExperimentalPart(experimentalPart))
                {
                    MerillData.log(": Unlocking part: " + sExperimentalPartName);

                    ResearchAndDevelopment.AddExperimentalPart(experimentalPart);
                    //expPartToRemove.Add(experimentalPart.name);
                }
                else
                {
                    MerillData.log(": Part unvailable / already research: " + sExperimentalPartName);
                }
            }
        }