Files
Enigmos/Modules/ControllingModules/SinglePoleSingleThrowSwitchModule.cs
2024-06-29 06:35:23 +08:00

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;
}
}