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