using Enigmos.Boards; using Enigmos.Modules.InterlayerModules; using Nocturnis; using Nocturnis.Enigmos.Boards; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; using Nocturnis.GlobalManagement.Providers; namespace Enigmos.Modules.ProgrammableModules; public abstract partial class ProgrammableModule : CompositeModule, IProgrammableModule { public IBaseBoard UnderlyingBoard { get; set; } public void EnterProgrammableBoard() => GlobalProvider.SceneProvider!.RootScene.ChangeScene(UnderlyingBoard.AsNode()); public abstract IEnumerable ExplicitPorts { get; } public abstract IEnumerable ImplicitPorts { get; } public override void UpdateCables() { foreach (IBasePort port in ExplicitPorts) { if(!Board!.CablePairing.ContainsKey(port) ) continue; Board.CablePairing[port].LineUpdate(); } base.UpdateCables(); } public override void Init() { base.Init(); InterlayerDataInModule[] explicitDataInModules = GetModules(); InterlayerDataOutModule[] explicitDataOutModules = GetModules(); InterlayerSignalInModule[] explicitSignalInModules = GetModules(); InterlayerSignalOutModule[] explicitSignalOutModules = GetModules(); for (int i = 0; i <= explicitDataInModules.Length; i++) { } } }