Пример #1
0
        void ProcessResources(RMResourceSet resources, BuildResourceSet report_resources, BuildResourceSet required_resources = null)
        {
            var reslist = resources.resources.Keys.ToList();

            foreach (string res in reslist)
            {
                double amount = resources.ResourceAmount(res);
                var    recipe = ELRecipeDatabase.ResourceRecipe(res);

                if (recipe != null)
                {
                    double density = ELRecipeDatabase.ResourceDensity(res);
                    double mass    = amount * density;
                    recipe = recipe.Bake(mass);
                    foreach (var ingredient in recipe.ingredients)
                    {
                        var br     = new BuildResource(ingredient);
                        var resset = report_resources;
                        if (required_resources != null)
                        {
                            resset = required_resources;
                        }
                        resset.Add(br);
                    }
                }
                else
                {
                    var br = new BuildResource(res, amount);
                    report_resources.Add(br);
                }
            }
        }
Пример #2
0
        void ProcessResource(RMResourceSet vr, string res, BuildResourceSet rd, bool xfer)
        {
            var amount = vr.ResourceAmount(res);
            var mass   = amount * ELRecipeDatabase.ResourceDensity(res);

            ProcessIngredient(new Ingredient(res, mass), rd, xfer);
        }
 internal void SetupCraftResources(Vessel vsl)
 {
     craftResources = new RMResourceSet(vsl);
     foreach (var br in buildCost.optional)
     {
         var amount = craftResources.ResourceAmount(br.name);
         craftResources.TransferResource(br.name, -amount);
     }
 }
Пример #4
0
        void ModuleResourceLine(int ind, RMResourceSet set, string res,
                                bool highlight)
        {
            double amount    = set.ResourceAmount(res);
            double maxAmount = set.ResourceCapacity(res);

            GUILayout.BeginHorizontal();
            GUILayout.Space(40);
            GUILayout.Label(set.name, ELStyles.label);
            GUILayout.FlexibleSpace();
            string amountFmt    = "F0";
            string maxAmountFmt = "F0";

            if (amount < 100)
            {
                amountFmt = "F2";
            }
            if (maxAmount < 100)
            {
                maxAmountFmt = "F2";
            }
            GUILayout.Label(amount.ToString(amountFmt), ELStyles.label);
            GUILayout.Label("/", ELStyles.label);
            GUILayout.Label(maxAmount.ToString(maxAmountFmt), ELStyles.label);
            TransferState(ind, set, res);
            FlowState(set, res);
            GUILayout.EndHorizontal();

            if (setSelected != null &&
                Event.current.type == EventType.Repaint)
            {
                var rect = GUILayoutUtility.GetLastRect();
                if (highlight && rect.Contains(Event.current.mousePosition))
                {
                    if (!setSelected[ind])
                    {
                        setSelected[ind] = true;
                        HighlightSet(set, res, true);
                    }
                }
                else
                {
                    if (setSelected[ind])
                    {
                        setSelected[ind] = false;
                        HighlightSet(set, res, false);
                    }
                }
            }
        }