space_engineers/DockLoader/Warehouse.cs

74 lines
2.3 KiB
C#

using Sandbox.ModAPI.Ingame;
using VRage.Game.ModAPI.Ingame.Utilities;
namespace IngameScript
{
partial class Program
{
public class Warehouse
{
public bool Timeout
{
get
{
return _timeoutTicks == 0;
}
}
private IMyConveyorSorter _inputSorter;
private IMyConveyorSorter _outputSorter;
private IConsole _console;
private uint _timeoutTicks = 0;
public Warehouse(IConsole console)
{
_console = new PrefixedConsole(console, "warehouse");
}
public void Update(int loadingCount)
{
if (_timeoutTicks > 0)
{
_timeoutTicks--;
if (_timeoutTicks == 0 || loadingCount == 0)
{
_console.Print("Disabling loading mode and restoring default behavior.");
_timeoutTicks = 0;
_outputSorter.Enabled = false;
_inputSorter.Enabled = true;
}
}
}
// A dock has requested loading
public void StartLoading()
{
_console.Print("A dock has requested loading mode.");
_inputSorter.Enabled = false;
_outputSorter.Enabled = true;
_timeoutTicks = 75; // This is approximately 2 minutes.
}
public void AddBlock(IMyTerminalBlock block, MyIni ini)
{
if (!(block is IMyConveyorSorter))
{
_console.Print($"Ignoring incompatible block '{block.CustomName}'");
return;
}
switch (ini.Get("dockLoader", "direction").ToString())
{
case "input":
_inputSorter = block as IMyConveyorSorter;
break;
case "output":
_outputSorter = block as IMyConveyorSorter;
break;
default:
_console.Print($"Invalid direction for '{block.CustomName}'");
break;
}
}
}
}
}