source generator

This commit is contained in:
h z
2024-07-10 07:02:11 +01:00
parent 3eec8a1345
commit 401e48e0ba
77 changed files with 432 additions and 336 deletions

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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>();

View File

@@ -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();
}
}