public static void DeleteDrive(Vessel vessel, uint partFlightID) { PartData partData = vessel.KerbalismData().GetPartData(partFlightID); if (partData != null) { partData.Drive.DeleteDriveData(); partData.Drive = null; } }
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); }
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(); }