using Enigmos.Modules.ControllingModules; using Enigmos.Modules.ProgrammableModules; using Enigmos.Ports; using Enigmos.Ports.SignalPorts; using Godot; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; namespace Enigmos.Modules.InterlayerModules; public partial class InterlayerSignalOutModule : ControllingModule, IInterlayerSignalOutModule { public override Vector2 PositionToBoard => base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero); public IProgrammableModule? ParentModule { get; set; } protected override bool Draggable => false; protected override bool HasManual => false; public IBasePort UnderlyingPort => SignalOut!; public IInterlayerSignalInModule? DualModule { get; set; } public ISignalOutPort? SignalOut { get; set; } public override IEnumerable Ports => new[] { SignalOut }!; public override void Init() { base.Init(); SignalOut = GetPort("SignalOut"); PostInit(); } protected override void Route(IRootModule root) { if (!SignalOut!.Connected) return; SignalOut.ConnectedPort!.Module.RouteWithTimeoutHandle(root); } }