Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public string monitoringKeyword = "monitor";
- public List<IMyConveyorSorter> stoneEjectionSorterList = new List<IMyConveyorSorter>();
- public List<IMyShipConnector> monitoredConnectorList = new List<IMyShipConnector>();
- public bool firstRun = true, connected = true;
- public TimeSpan recheckSpan = TimeSpan.FromSeconds(0);
- public string lastMessage = "Booting";
- public Program()
- {
- Runtime.UpdateFrequency = UpdateFrequency.Update10;
- monitoringKeyword = monitoringKeyword.ToLower();
- GridTerminalSystem.GetBlocksOfType<IMyConveyorSorter>(stoneEjectionSorterList, b => b.CustomData.ToLower().Contains(monitoringKeyword));
- GridTerminalSystem.GetBlocksOfType<IMyShipConnector>(monitoredConnectorList, b => b.CustomData.ToLower().Contains(monitoringKeyword));
- lastMessage = "Booted With: " + monitoredConnectorList.Count + ": Connectors and: " + stoneEjectionSorterList.Count + " Sorters";
- }
- public void Save() { }
- public void Main(string argument, UpdateType updateSource)
- {
- try {
- if (monitoredConnectorList.Count > 0 || stoneEjectionSorterList.Count > 0)
- {
- if (recheckSpan.TotalSeconds <= 0.0)
- {
- bool tempConnected = Connected();
- if (tempConnected != connected || firstRun)
- {
- connected = tempConnected;
- Update();
- }
- } else recheckSpan -= Runtime.TimeSinceLastRun;
- } else lastMessage = "No connectors or conveyors";
- if (argument != "") Commands(argument);
- } catch { lastMessage = "Error caught in main"; }
- Echo(lastMessage);
- }
- public void Commands(string argument)
- {
- string arg = argument.ToLower();
- switch (arg)
- {
- case "disconnect":
- Connect(true);
- break;
- case "connect":
- Connect();
- break;
- case "unlock":
- Connect(true);
- break;
- case "lock":
- Connect();
- break;
- case "scan":
- GridTerminalSystem.GetBlocksOfType<IMyConveyorSorter>(stoneEjectionSorterList, b => b.CustomData.ToLower().Contains(monitoringKeyword));
- GridTerminalSystem.GetBlocksOfType<IMyShipConnector>(monitoredConnectorList, b => b.CustomData.ToLower().Contains(monitoringKeyword));
- lastMessage = "Booted With: " + monitoredConnectorList.Count + ": Connectors and: " + stoneEjectionSorterList.Count + " Sorters";
- break;
- }
- }
- public void Connect(bool disconnect = false)
- {
- bool tempConnected = disconnect;
- for (int i = 0; i < monitoredConnectorList.Count; i++)
- {
- if (!disconnect && monitoredConnectorList[i].Status == MyShipConnectorStatus.Connectable)
- {
- tempConnected = true;
- monitoredConnectorList[i].Connect();
- }
- else if (monitoredConnectorList[i].Status == MyShipConnectorStatus.Connected)
- {
- if (!disconnect) tempConnected = true;
- else
- {
- tempConnected = false;
- monitoredConnectorList[i].Disconnect();
- }
- }
- }
- if (tempConnected)
- {
- lastMessage = "Connected";
- connected = true;
- SetFilter();
- SetConnector();
- }
- else
- {
- lastMessage = "Disconnected";
- connected = false;
- SetFilter();
- SetConnector();
- }
- }
- public void SetFilter()
- {
- List<MyInventoryItemFilter> filters = new List<MyInventoryItemFilter>();
- for (int i = 0; i < stoneEjectionSorterList.Count; i++)
- {
- if (connected && stoneEjectionSorterList[i].Mode != MyConveyorSorterMode.Blacklist)
- {
- stoneEjectionSorterList[i].GetFilterList(filters);
- stoneEjectionSorterList[i].SetFilter(MyConveyorSorterMode.Blacklist, filters);
- }
- else if (!connected && stoneEjectionSorterList[i].Mode != MyConveyorSorterMode.Whitelist)
- {
- stoneEjectionSorterList[i].GetFilterList(filters);
- stoneEjectionSorterList[i].SetFilter(MyConveyorSorterMode.Whitelist, filters);
- }
- }
- }
- public void SetConnector()
- {
- for (int i = 0; i < monitoredConnectorList.Count; i++)
- {
- monitoredConnectorList[i].ThrowOut = !connected;
- }
- }
- public void Update()
- {
- recheckSpan = TimeSpan.FromSeconds(5);
- firstRun = false;
- SetFilter();
- SetConnector();
- if (connected) lastMessage = "Connected";
- else lastMessage = "Disconnected";
- }
- public bool Connected()
- {
- for (int i = 0; i < monitoredConnectorList.Count; i++)
- {
- if (monitoredConnectorList[i].Status == MyShipConnectorStatus.Connected) return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement