Esempio n. 1
0
        /// <summary>
        /// Stores or retrieves a resource to the facility. Deletes the resource if nothing is left
        /// </summary>
        /// <param name="resource"></param>
        /// <param name="amount"></param>
        internal static void StoreResource(PartResourceDefinition resource, double amount)
        {
            StoredResource myStoredResource = selectedFacility.storedResources.Where(r => r.resource == resource).FirstOrDefault();

            if (myStoredResource == null)
            {
                myStoredResource = new StoredResource {
                    resource = resource, amount = (float)amount
                };
                selectedFacility.storedResources.Add(myStoredResource);
            }
            else
            {
                myStoredResource.amount += (float)amount;
            }

            if (Math.Round(myStoredResource.amount, 4) == 0f)
            {
                selectedFacility.storedResources.Remove(myStoredResource);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// SubSub windows components. The actual scroll view
        /// </summary>
        internal static void ShowRetrieveGUI()
        {
            foreach (PartResourceDefinition resource in allResources)
            {
                if (blackListedResources.Contains(resource.name))
                {
                    continue;
                }

                storedResource = selectedFacility.storedResources.Where(r => r.resource == resource).FirstOrDefault();
                if (storedResource == null)
                {
                    storedAmount = 0f;
                }
                else
                {
                    storedAmount = storedResource.amount;
                }

                GUILayout.Box(UIMain.tHorizontalSep, UIMain.BoxNoBorderW, GUILayout.Height(4));
                GUILayout.BeginHorizontal();
                {
                    GUILayout.Label(resource.name, GUILayout.Height(23));
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Stored: ", GUILayout.Height(23));
                    GUILayout.Label((storedAmount).ToString(), UIMain.LabelInfo, GUILayout.Height(23));

                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Volume: ", GUILayout.Height(23));
                    GUILayout.Label((resource.volume * storedAmount).ToString() + "/" + selectedFacility.maxVolume.ToString(), UIMain.LabelInfo, GUILayout.Height(23));
                    //GUILayout.Space(10);
                }
                GUILayout.EndHorizontal();
                foreach (PartSet xFeedSet in currentVessel.crossfeedSets)
                {
                    xFeedSet.GetConnectedResourceTotals(resource.id, out double xfeedAmount, out double xfeedMax, true);
                    GUILayout.BeginHorizontal();
                    {
                        GUILayout.Label(Math.Round(xfeedAmount, 1).ToString() + " of " + Math.Round(xfeedMax, 1).ToString(), UIMain.LabelInfo, GUILayout.Height(18));
                        GUILayout.FlexibleSpace();

                        maxSpaceLeft  = selectedFacility.maxVolume - selectedFacility.currentVolume;
                        storableUnits = Math.Min(increment, maxSpaceLeft / resource.volume);
                        GUI.enabled   = (storableUnits > 0f);
                        if (GUILayout.Button("+", GUILayout.Height(18), GUILayout.Width(32)))
                        {
                            double transferred = xFeedSet.RequestResource(xFeedSet.GetParts().ToList().First(), resource.id, storableUnits, true);
                            StoreResource(resource, transferred);
                        }
                        if (GUILayout.RepeatButton("++", GUILayout.Height(18), GUILayout.Width(32)))
                        {
                            double transferred = xFeedSet.RequestResource(xFeedSet.GetParts().ToList().First(), resource.id, storableUnits, true);
                            StoreResource(resource, transferred);
                        }
                        GUI.enabled = true;
                        GUILayout.FlexibleSpace();

                        // check if we have enough space to retrieve the resource and if there is anything to retrieve
                        GUI.enabled = ((xfeedMax > 0) && (storedAmount > 0f));
                        if (GUILayout.Button("-", GUILayout.Height(18), GUILayout.Width(32)))
                        {
                            double transferred = xFeedSet.RequestResource(xFeedSet.GetParts().ToList().First(), resource.id, -Math.Min(increment, storedAmount), true);
                            StoreResource(resource, transferred);
                        }
                        if (GUILayout.RepeatButton("--", GUILayout.Height(18), GUILayout.Width(32)))
                        {
                            double transferred = xFeedSet.RequestResource(xFeedSet.GetParts().ToList().First(), resource.id, -Math.Min(increment, storedAmount), true);
                            StoreResource(resource, transferred);
                        }
                        GUILayout.Space(10);
                        GUI.enabled = true;
                    }
                    GUILayout.EndHorizontal();
                }
                //GUILayout.Space(4);
            }
        }
Esempio n. 3
0
 public StorageItem(Storage storage, StoredResource storedResource, RMResourceInfo vesselResource)
 {
     this.storage        = storage;
     this.storedResource = storedResource;
     this.vesselResource = vesselResource;
 }