private void Move(PartContent aPart, int qty, KASModuleContainer destContainer) { if (destContainer.MaxSizeReached(aPart.grabModule, qty)) { fxSndBipWrong.audio.Play(); ScreenMessages.PostScreenMessage("Max size of the destination container reached !", 5, ScreenMessageStyle.UPPER_CENTER); return; } PartContent dest = PartContent.Get(destContainer.contents, aPart.name); if (aPart.pristine_count > 0) { int delta = Math.Min(aPart.pristine_count, qty); aPart.pristine_count -= delta; dest.pristine_count += delta; qty -= delta; } while (qty > 0 && aPart.instances.Count > 0) { dest.Load(aPart.PopInstance()); qty--; } RefreshTotalSize(); destContainer.RefreshTotalSize(); }
public override void OnLoad(ConfigNode node) { base.OnLoad(node); // Do not load ScienceData nodes for this module's host part (a KAS container) as they were only stored in case the vessel was // recovered. The original parts still contain the science data. (See OnSave.) if (node.HasNode("CONTENT") || node.HasNode("CONTENT_PART")) { contents.Clear(); } foreach (ConfigNode cn in node.nodes) { if (cn.name != "CONTENT" && cn.name != "CONTENT_PART") { continue; } string AvPartName = cn.GetValue("name") ?? "null"; PartContent item = PartContent.Get(contents, AvPartName); if (item != null) { item.Load(cn); } else { KAS_Shared.DebugError("Load(Container) - Cannot retrieve " + AvPartName + " from PartLoader !"); } } }
public override void OnLoad(ConfigNode node) { base.OnLoad(node); if (node.HasNode("CONTENT") || node.HasNode("CONTENT_PART")) { contents.Clear(); } foreach (ConfigNode cn in node.nodes) { if (cn.name != "CONTENT" && cn.name != "CONTENT_PART") { continue; } string AvPartName = cn.GetValue("name") ?? "null"; PartContent item = PartContent.Get(contents, AvPartName); if (item != null) { item.Load(cn); } else { KAS_Shared.DebugError("Load(Container) - Cannot retrieve " + AvPartName + " from PartLoader !"); } } }
private void StoreGrabbedPart() { KASModuleGrab moduleGrab = KAS_Shared.GetGrabbedPartModule(FlightGlobals.ActiveVessel); if (!moduleGrab || moduleGrab.part.packed) { fxSndBipWrong.audio.Play(); ScreenMessages.PostScreenMessage("You didn't grab anything to store !", 5, ScreenMessageStyle.UPPER_CENTER); return; } if (!moduleGrab.storable) { fxSndBipWrong.audio.Play(); ScreenMessages.PostScreenMessage("This part cannot be stored !", 5, ScreenMessageStyle.UPPER_CENTER); return; } if (MaxSizeReached(moduleGrab, 1)) { fxSndBipWrong.audio.Play(); ScreenMessages.PostScreenMessage("Max size of the container reached !", 5, ScreenMessageStyle.UPPER_CENTER); return; } PartContent info = PartContent.Get(contents, moduleGrab.part.partInfo.name); if (info == null) { fxSndBipWrong.audio.Play(); ScreenMessages.PostScreenMessage("Could not store part!", 5, ScreenMessageStyle.UPPER_CENTER); return; } if (moduleGrab.stateless) { info.pristine_count++; } else { info.Load(KAS_Shared.SavePartSnapshot(moduleGrab.part)); } RefreshTotalSize(); moduleGrab.Drop(true); moduleGrab.part.Die(); fxSndStore.audio.Play(); }