commit e9f360305bef18b77f14b9d362760d4df360389f Author: Firq Date: Wed Mar 1 18:59:59 2023 +0100 Initial Commit diff --git a/iceMonitor.cs b/iceMonitor.cs new file mode 100644 index 0000000..7c78a85 --- /dev/null +++ b/iceMonitor.cs @@ -0,0 +1,57 @@ +const int upperThreshold = 25000000; +const int lowerThreshold = 1000000; +string collectorState = ""; + +List oreContainers = new List(); +List Items = new List(); + +IMyBlockGroup collectorGroup; +List collectors = new List(); + +public Program() { + Runtime.UpdateFrequency = UpdateFrequency.Update100; +} + +public void Main(string args) { + collectorGroup = GridTerminalSystem.GetBlockGroupWithName("Collectors"); + collectorGroup.GetBlocksOfType(collectors); + int iceamount = getCurrentIceAmount(); + collectorState = collectors[0].Enabled ? "Active" : "Inactive"; + Echo($"Current Ice Amount: {iceamount}"); + Echo($"Collectors are {collectorState}"); + + if(iceamount > upperThreshold) { + toggleCollectors(false); + Echo($"Collectors are OFF"); + } else if (iceamount < lowerThreshold) { + toggleCollectors(true); + Echo($"Collectors are ON"); + } +} + +public int getCurrentIceAmount() { + int totalAmount = 0; + GridTerminalSystem.GetBlocksOfType(oreContainers); + foreach (var osc in oreContainers) { + var inventory = osc.GetInventory(0); + Items.Clear(); + inventory.GetItems(Items); + foreach (var item in Items) { + string key = item.Type.ToString(); + if (key == "MyObjectBuilder_Ore/Ice") { + totalAmount = totalAmount + item.Amount.ToIntSafe(); + } + } + } + return totalAmount; +} + +public void toggleCollectors(bool targetState) { + if (collectors == null) { + Echo("Group collectors not found"); + return; + } + foreach (var collector in collectors) { + collector.Enabled = targetState; + } +} \ No newline at end of file