using Enigmos.Cables; using Godot; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; using TabulaSmaragdina; namespace Enigmos.Ports.SignalPorts; public abstract partial class SignalPort : BasePort, ISignalInPort { public new IControllingModule Module { get => (base.Module as IControllingModule)!; set => base.Module = value; } protected AnimatedSprite2D SignalDirection { get; set; } public override void Init() { base.Init(); SignalDirection = GetNode("SignalDirection"); SignalDirection.Visible = false; } private void MouseEnteredHandler() => SignalDirection.Visible = true; private void MouseExitedHandler() => SignalDirection.Visible = false; public override void SetStatusConnected() => TextureNormal = GlobalProvider.EnigmosProvider!.SignalPortStatusConnected; public override void SetStatusNormal() => TextureNormal = GlobalProvider.EnigmosProvider!.SignalPortStatusNormal; public override void SetStatusPending() => TextureNormal = GlobalProvider.EnigmosProvider!.SignalPortStatusPending; public override BaseCable MakeCable(IBasePort other) { BaseCable res = GlobalProvider.EnigmosProvider!.SignalCableScene.Instantiate(); res.Init(); return res; } }