using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; using Nocturnis.Enigmos.Ports.DataPorts.Directions; using Nocturnis.GlobalManagement.Constants; using Nocturnis.GlobalManagement.Controls; namespace Enigmos.Modules.ControllingModules; public partial class SinglePoleSingleThrowSwitchModule : PiplineModule, ITerminalModule { public override IEnumerable Ports => SignalInPorts.Union(SignalOutPorts.Cast()).Union(DataInPorts); public IDataInPort[] DataInPorts { get; set; } = Array.Empty(); public void Drain() { foreach (IDataInPort ip in DataInPorts) _ = ip.GetData.Get; } public override void Init() { base.Init(); this.DataInInit("Input", 1); this.SignalInInit("SignalIn", 1); this.SignalOutInit("SignalOut", 1); DataInPorts[0].SetDataType(EnigmosConstant.DataPortTypes.Bit); PostInit(); } public override void Execute() { Visited = true; if (DataInPorts[0].GetData.Get!.Bit && SignalOutPorts[0].Connected) SignalOutPorts[0].Route(); else EnigmosControl.Instance.RootModule.ActionFinished = true; } }