Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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 !");
                }
            }
        }
Exemplo n.º 3
0
        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 !");
                }
            }
        }
Exemplo n.º 4
0
        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();
        }