Beispiel #1
0
        public static void DeleteDrive(Vessel vessel, uint partFlightID)
        {
            PartData partData = vessel.KerbalismData().GetPartData(partFlightID);

            if (partData != null)
            {
                partData.Drive.DeleteDriveData();
                partData.Drive = null;
            }
        }
Beispiel #2
0
        public PartData GetPartData(uint flightID)
        {
            PartData pd;

            // in some cases (KIS added parts), we might try to get partdata before it is added by part-adding events
            // so we implement a fallback here
            if (!parts.TryGetValue(flightID, out pd))
            {
                foreach (Part p in Vessel.parts)
                {
                    if (p.flightID == flightID)
                    {
                        pd = new PartData(p);
                        parts.Add(flightID, pd);
                        Lib.LogDebug("VesselData : newly created part '{0}' added to vessel '{1}'", p.partInfo.title, Vessel.vesselName);
                    }
                }
            }
            return(pd);
        }
Beispiel #3
0
        public override void OnStart(StartState state)
        {
            // don't break tutorial scenarios
            if (Lib.DisableScenario(this))
            {
                return;
            }

            if (Lib.IsEditor())
            {
                if (effectiveDataCapacity == -1.0)
                {
                    effectiveDataCapacity = dataCapacity;
                }

                if (dataCapacity > 0.0 && maxDataCapacityFactor > 0)
                {
                    Fields["dataCapacityUI"].guiActiveEditor = true;
                    var o = (UI_ChooseOption)Fields["dataCapacityUI"].uiControlEditor;

                    dataCapacities = GetDataCapacitySizes();
                    int currentCapacityIndex = dataCapacities.FindIndex(p => p.Value == effectiveDataCapacity);
                    if (currentCapacityIndex >= 0)
                    {
                        dataCapacityUI = dataCapacities[currentCapacityIndex].Key;
                    }
                    else
                    {
                        effectiveDataCapacity = dataCapacities[0].Value;
                        dataCapacityUI        = dataCapacities[0].Key;
                    }

                    string[] dataOptions = new string[dataCapacities.Count];
                    for (int i = 0; i < dataCapacities.Count; i++)
                    {
                        dataOptions[i] = Lib.HumanReadableDataSize(dataCapacities[i].Value);
                    }
                    o.options = dataOptions;
                }

                if (effectiveSampleCapacity == -1)
                {
                    effectiveSampleCapacity = sampleCapacity;
                }

                if (sampleCapacity > 0 && maxSampleCapacityFactor > 0)
                {
                    Fields["sampleCapacityUI"].guiActiveEditor = true;
                    var o = (UI_ChooseOption)Fields["sampleCapacityUI"].uiControlEditor;

                    sampleCapacities = GetSampleCapacitySizes();
                    int currentCapacityIndex = sampleCapacities.FindIndex(p => p.Value == effectiveSampleCapacity);
                    if (currentCapacityIndex >= 0)
                    {
                        sampleCapacityUI = sampleCapacities[currentCapacityIndex].Key;
                    }
                    else
                    {
                        effectiveSampleCapacity = sampleCapacities[0].Value;
                        sampleCapacityUI        = sampleCapacities[0].Key;
                    }

                    string[] sampleOptions = new string[sampleCapacities.Count];
                    for (int i = 0; i < sampleCapacities.Count; i++)
                    {
                        sampleOptions[i] = Lib.HumanReadableSampleSize(sampleCapacities[i].Value);
                    }
                    o.options = sampleOptions;
                }
            }

            if (Lib.IsFlight() && hdId == 0)
            {
                hdId = part.flightID;
            }
            if (drive == null)
            {
                if (!Lib.IsFlight())
                {
                    drive = new Drive(title, effectiveDataCapacity, effectiveSampleCapacity);
                }
                else
                {
                    PartData pd = vessel.KerbalismData().GetPartData(part.flightID);
                    if (pd.Drive == null)
                    {
                        drive    = new Drive(part.partInfo.title, effectiveDataCapacity, effectiveSampleCapacity, !string.IsNullOrEmpty(experiment_id));
                        pd.Drive = drive;
                    }
                    else
                    {
                        drive = vessel.KerbalismData().GetPartData(part.flightID).Drive;
                    }
                }

                //DB.Drive(hdId, title, effectiveDataCapacity, effectiveSampleCapacity);
            }

            UpdateCapacity();
        }