36 lines
1007 B
C#
36 lines
1007 B
C#
using Enigmos.Ports;
|
|
using Enigmos.Ports.DataPorts;
|
|
using Enigmos.Ports.SignalPorts;
|
|
using TabulaSmaragdina.Constants;
|
|
|
|
namespace Enigmos.Modules.ControllingModules;
|
|
|
|
public partial class SinglePoleSingleThrowSwitchModule : ControllingModule
|
|
{
|
|
private SignalInPort SignalIn { get; set; }
|
|
private SignalOutPort SignalOut { get; set; }
|
|
private DataInPort ControlInput { get; set; }
|
|
public override IEnumerable<BasePort> Ports => new BasePort[] { SignalIn, SignalOut, ControlInput };
|
|
|
|
public override void Init()
|
|
{
|
|
base.Init();
|
|
SignalIn = GetPort<SignalInPort>("SignalIn");
|
|
SignalOut = GetPort<SignalOutPort>("SignalOut");
|
|
ControlInput = GetPort<DataInPort>("ControlInput");
|
|
ControlInput.SetDataType(EnigmosConstant.DataPortTypes.Bit);
|
|
PostInit();
|
|
}
|
|
|
|
|
|
|
|
protected override void Route(RootModule root)
|
|
{
|
|
Visited = true;
|
|
if (ControlInput.GetData(root).Bit && SignalOut.Connected)
|
|
SignalOut.ConnectedPort.Module.RouteWithTimeoutHandle(root);
|
|
else
|
|
root.ActionFinished = true;
|
|
}
|
|
}
|