Esempio n. 1
0
        public static void Postfix(ref FactoryStation __instance, ref Recipe recipe, ref RichTextWriter result, ref FactoryTexts ___m_texts, ref OnlineCargo ___m_cargo)
        {
            foreach (var inventoryItemData in recipe.Inputs)
            {
                var inputAmount     = (int)GET_INPUT_AMOUNT_METHOD_INFO.Invoke(__instance, new object[] { inventoryItemData });
                var availableAmount = ___m_cargo.GetAmount(inventoryItemData.Item, inventoryItemData.Stats);

                // Show input amount needed.
                result.CurrentStyle = inputAmount >= inventoryItemData.Amount ? "Text" : "TextError";
                result.Text.ConcatFormat(___m_texts.InputFormat.Text, inventoryItemData.Amount, inventoryItemData.Item.Name);
                // Show available amount.
                result.CurrentStyle = "Text";
                result.Text.ConcatFormat(___m_texts.InputAvailableFormat.Text, availableAmount);

                result.Text.AppendLine();
            }
        }
        public override void CreateOutput(Dictionary <string, StringBuilder> output, IMyCubeGrid grid)
        {
            base.CreateOutput(output, grid);

            FactoryStation station = Station as FactoryStation;

            if (station == null)
            {
                return;
            }

            StringBuilder outputBuilder   = CloneOutput(output["station"]);
            StringBuilder progressBuilder = CloneOutput(output["station"]);

            outputBuilder.AppendLine("Purchasing:");
            foreach (Item item in station.Stock.Where(i => i.IsPurchasing))
            {
                string line = FormatItem(item, item.PurchasePrice.GetStockPrice(item.CargoRatio));
                outputBuilder.AppendLine(line);
            }

            outputBuilder.AppendLine();
            outputBuilder.AppendLine("Selling:");
            foreach (Item item in station.Stock.Where(i => i.IsSelling))
            {
                string line = FormatItem(item, item.SellPrice.GetStockPrice(item.CargoRatio));
                outputBuilder.AppendLine(line);
            }


            outputBuilder.AppendLine();
            outputBuilder.AppendLine("Progress:");
            progressBuilder.AppendLine("Progress:");
            foreach (KeyValuePair <string, double> pair in station.Progress())
            {
                string line = $"{pair.Key}: {pair.Value:0.##}%";
                outputBuilder.AppendLine(line);
                progressBuilder.AppendLine(line);
            }

            output.Add("factory", outputBuilder);
            output.Add("progress", progressBuilder);
        }