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); }