source generator
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
using Enigmos.Cables;
|
||||
using Enigmos.Modules;
|
||||
using Enigmos.Modules.ProgrammableModules;
|
||||
using Enigmos.Modules.SubModules;
|
||||
using Godot;
|
||||
using Nocturnis.DataStructures;
|
||||
using Nocturnis.Enigmos.Boards;
|
||||
using Nocturnis.Enigmos.Cables;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Modules.InterlayerModules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using Nocturnis.GlobalManagement.Controls;
|
||||
using Nocturnis.GlobalManagement.Providers;
|
||||
@@ -62,6 +64,17 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
|
||||
protected HashSet<IBasePort> Ports => Modules.SelectMany(module => module.Ports).ToHashSet();
|
||||
public IPanelViewer? PanelViewer { get; set; }
|
||||
public Dictionary<IBasePort, IBaseCable> CablePairing { get; set; } = new();
|
||||
|
||||
public IEnumerable<IBasePort> OnBoardPorts
|
||||
{
|
||||
get
|
||||
{
|
||||
IEnumerable<IBasePort> res = Array.Empty<IBasePort>();
|
||||
foreach (IInterlayerModule im in GetChildren().OfType<IInterlayerModule>())
|
||||
res = res.Union(im.Ports);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
public IBasePort? ConnectPending { get; set; }
|
||||
public IBoardControlLayer? CircuitBoardControlLayer { get; set; }
|
||||
public IModuleMovingLayer? ModuleMovingLayer { get; set; }
|
||||
@@ -153,7 +166,7 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
|
||||
if (item is IBaseModuleItem moduleItem)
|
||||
{
|
||||
foreach (IBaseModule module in Modules)
|
||||
if (GlobalProvider.UIProvider.Overlap(atPosition, moduleItem.ContentModule.Size, module.Position, module.Size))
|
||||
if (GlobalProvider.UIProvider!.Overlap(atPosition, moduleItem.ContentModule.Size, module.Position, module.Size))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -198,4 +211,17 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
|
||||
res.Board = this;
|
||||
return res;
|
||||
}
|
||||
|
||||
public T[] GetModules<T>() where T : BaseModule
|
||||
{
|
||||
T[] res = GetChildren().OfType<T>().OrderBy(x => x.Name).ToArray();
|
||||
foreach (T m in res)
|
||||
{
|
||||
m.Init();
|
||||
Modules.Add(m);
|
||||
m.Board = this;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
using Enigmos.Modules.InterlayerModules;
|
||||
using Enigmos.Modules.ProgrammableModules.FilterModule;
|
||||
using Nocturnis;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Modules.InterlayerModules;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
|
||||
namespace Enigmos.Boards;
|
||||
public partial class FilterModuleBoard : BaseBoard
|
||||
public partial class FilterModuleBoard : BaseBoard, ISceneConcept
|
||||
{
|
||||
public IFilterModule? FilterModule { get; set; }
|
||||
public FilterModule? FilterModule { get; set; }
|
||||
|
||||
public FilterInputProviderModule? InputProvider { get; set; }
|
||||
|
||||
@@ -19,7 +20,7 @@ public partial class FilterModuleBoard : BaseBoard
|
||||
//public IndicateInputModule? Indicate { get; set; }
|
||||
public FilterIndicateModule? Indicate { get; set; }
|
||||
|
||||
public void Init(IFilterModule filterModule)
|
||||
public void Init(FilterModule filterModule)
|
||||
{
|
||||
base.Init();
|
||||
FilterModule = filterModule;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
using Enigmos.Modules.InterlayerModules;
|
||||
using Nocturnis;
|
||||
|
||||
namespace Enigmos.Boards;
|
||||
|
||||
public partial class FunctionModuleBoard : BaseBoard
|
||||
public partial class FunctionModuleBoard : BaseBoard, ISceneConcept
|
||||
{
|
||||
public InterlayerDataInModule[] DataIns { get; set; } = Array.Empty<InterlayerDataInModule>();
|
||||
public InterlayerDataOutModule[] DataOuts { get; set; } = Array.Empty<InterlayerDataOutModule>();
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
using Enigmos.Modules.InterlayerModules;
|
||||
using Enigmos.Modules.Other;
|
||||
using Enigmos.Modules.ProgrammableModules.OptimizationModule;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
using Nocturnis;
|
||||
using Nocturnis.Attributes;
|
||||
|
||||
namespace Enigmos.Boards;
|
||||
|
||||
public partial class OptimizationModuleBoard : BaseBoard
|
||||
[UniqueInheritance]
|
||||
public partial class OptimizationModuleBoard : BaseBoard, ISceneConcept
|
||||
{
|
||||
public OptimizationModule? OptimizationModule { get; set; }
|
||||
|
||||
public OptimizationInputProviderModule? InputProvider { get; set; }
|
||||
public OptimizationSelectorModule? Selector { get; set; }
|
||||
public InterlayerDataOutModule[] ImplicitDataOuts { get; set; } = Array.Empty<InterlayerDataOutModule>();
|
||||
public override void Init()
|
||||
public void Init(OptimizationModule m)
|
||||
{
|
||||
|
||||
|
||||
OptimizationModule = m;
|
||||
ImplicitDataOuts = new InterlayerDataOutModule[3];
|
||||
base.Init();
|
||||
for (int i = 0; i < 3; i++)
|
||||
ImplicitDataOuts[i] = GetModule<InterlayerDataOutModule>($"IO{i + 1}");
|
||||
InputProvider = GetModule<OptimizationInputProviderModule>("InputProvider");
|
||||
Selector = GetModule<OptimizationSelectorModule>("Selector");
|
||||
|
||||
InputProvider.Init(this);
|
||||
Selector.Init();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user