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 Ports => new BasePort[] { SignalIn, SignalOut, ControlInput }; public override void Init() { base.Init(); SignalIn = GetPort("SignalIn"); SignalOut = GetPort("SignalOut"); ControlInput = GetPort("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; } }