69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
/* CUSTOMIZE BEHAVIOR HERE */
|
|
|
|
const int upperThreshold = 25000000;
|
|
const int lowerThreshold = 1000000;
|
|
|
|
/* DO NOT CHANGE ANYTHING BELOW THIS LINE */
|
|
|
|
string collectorState = "";
|
|
|
|
List<IMyCargoContainer> oreContainers = new List<IMyCargoContainer>();
|
|
List<MyInventoryItem> Items = new List<MyInventoryItem>();
|
|
|
|
IMyBlockGroup collectorGroup;
|
|
List<IMyCollector> collectors = new List<IMyCollector>();
|
|
|
|
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");
|
|
}
|
|
|
|
var msg = string.Format("\n\nIce Manager by Firq\n----------------------------\nCurrent Time: {0}\n----------------------------\nCollectors are {1}\nIce Amount: {2}M",
|
|
DateTime.UtcNow.ToLocalTime().ToLongTimeString(), collectorState, Math.Round((iceamount / 1000000.0), 2));
|
|
var screen = Me.GetSurface(0);
|
|
screen.ContentType = ContentType.TEXT_AND_IMAGE;
|
|
screen.Alignment = TextAlignment.CENTER;
|
|
screen.WriteText(msg, false);
|
|
}
|
|
|
|
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;
|
|
}
|
|
} |