Files
space-engineers/InventoryListToLcd.cs

56 lines
1.7 KiB
C#

public Program()
{
Runtime.UpdateFrequency = UpdateFrequency.Update100;
}
public void Save()
{
}
public void Main(string argument, UpdateType updateSource)
{
IMyTextPanel LCD = GridTerminalSystem.GetBlockWithName("Display_1") as IMyTextPanel;
List<IMyTerminalBlock> containers = new List<IMyTerminalBlock>();
GridTerminalSystem.GetBlocksOfType<IMyTerminalBlock>(containers, block => block.HasInventory);
// Calculate Count
Dictionary<String,float> ingots = new Dictionary<String,float>() {
{ "Nickel", 6 },
{ "Cobalt", 5 },
{ "Stone", 5 },
{ "Magnesium", 10 },
{ "Silver", 5 },
{ "Gold", 4 },
{ "Silicon", 6 },
{ "Uranium", 7},
{ "Platinum", 7 },
{ "Iron", 3 }
};
Dictionary<String,float> ores = new Dictionary<String,float>(ingots);
foreach (var container in containers)
{
foreach (var ingot in ingots.Keys.ToList())
{
for (int i = 0; i < container.InventoryCount; i++)
{
ingots[ingot] += (float)container.GetInventory(i).GetItemAmount(new MyItemType("MyObjectBuilder_Ingot", ingot));
ores[ingot] += (float)container.GetInventory(i).GetItemAmount(new MyItemType("MyObjectBuilder_Ore", ingot));
}
}
}
// Dispaly
string output = " Ingots Ores\n-----------------------------------\n";
foreach (var ingot in ingots)
{
output += ingot.Key.PadRight(10) + " " + ingot.Value.ToString("n2").PadRight(15) + " " + ores[ingot.Key].ToString("n2") + "\n";
}
LCD.ContentType = ContentType.TEXT_AND_IMAGE;
LCD.WriteText(output);
}