36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
using Enigmos.Boards;
|
|
using Nocturnis.Enigmos.Modules;
|
|
using Nocturnis.Enigmos.Modules.InterlayerModules;
|
|
using Nocturnis.Enigmos.Ports;
|
|
using Nocturnis.GlobalManagement.Providers;
|
|
|
|
namespace Enigmos.Modules.ProgrammableModules;
|
|
|
|
public abstract partial class ProgrammableModule : BaseModule, ICompositeModule, IProgrammableModule
|
|
{
|
|
public BaseBoard? UnderlyingBoard { get; set; }
|
|
public abstract IBaseModule[] SubModules { get; }
|
|
public void EnterProgrammableBoard() => GlobalProvider.SceneProvider!.RootScene.ChangeScene(UnderlyingBoard!);
|
|
public abstract IEnumerable<IBasePort> ExplicitPorts { get; }
|
|
public abstract IEnumerable<IBasePort> ImplicitPorts { get; }
|
|
public override void UpdateCables()
|
|
{
|
|
foreach (IBasePort port in ExplicitPorts)
|
|
{
|
|
if(!Board!.CablePairing.ContainsKey(port) )
|
|
continue;
|
|
Board.CablePairing[port].LineUpdate();
|
|
}
|
|
base.UpdateCables();
|
|
}
|
|
|
|
protected T GetModule<T>(string path) where T : SubModule
|
|
{
|
|
T res = GetNode<T>(path);
|
|
res.Init();
|
|
res.ParentModule = this;
|
|
res.Board = Board;
|
|
return res;
|
|
}
|
|
}
|