Upgrade structure of code base

This commit is contained in:
h z
2024-07-03 12:20:08 +08:00
parent 59d257c06a
commit be5428d708
91 changed files with 1742 additions and 1603 deletions

View File

@@ -1,21 +1,18 @@
using Enigmos.Cables;
using Enigmos.Modules;
using Enigmos.Modules.ControllingModules;
using Enigmos.Modules.ProgrammableModules;
using Enigmos.Modules.TerminalModules;
using Enigmos.Ports.DataPorts;
using Godot;
using Nocturnis.DataStructures;
using Nocturnis.Enigmos.Boards;
using Nocturnis.Enigmos.Cables;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.GlobalManagement.Controls;
using Nocturnis.GlobalManagement.Providers;
using Nocturnis.Inventories.Items;
using Nocturnis.Inventories.Items.Items;
using Nocturnis.UIElements;
using Nocturnis.UIElements.Layers;
using TabulaSmaragdina;
using TabulaSmaragdina.Controls;
namespace Enigmos.Boards;
@@ -57,10 +54,10 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
Modules
.OfType<ProgrammableModule>();
public IEnumerable<TerminalModule> TerminalModules() =>
public IEnumerable<ITerminalModule> TerminalModules =>
Modules
.OfType<TerminalModule>()
.Union(ProgrammableModules().SelectMany(module => module.UnderlyingBoard.TerminalModules()));
.OfType<ITerminalModule>()
.Union(ProgrammableModules().SelectMany(module => module.UnderlyingBoard!.TerminalModules));
protected HashSet<IBasePort> Ports => Modules.SelectMany(module => module.Ports).ToHashSet();
public IPanelViewer? PanelViewer { get; set; }
@@ -103,6 +100,15 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
public virtual void Reset()
{
foreach (ISourceModule sm in Modules.OfType<ISourceModule>())
sm.Reset();
foreach (IProgrammableModule pm in Modules.OfType<IProgrammableModule>())
pm.Board!.Reset();
foreach (IControllingModule cm in Modules.OfType<IControllingModule>())
cm.Visited = false;
/*
foreach (IBaseModule module in Modules)
{
if (module is RootModule rootModule)
@@ -120,13 +126,13 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
if (module is ProgrammableModule programmableModule)
{
programmableModule.UnderlyingBoard.Reset();
foreach (DataOutPort outPort in programmableModule.ExplicitPorts().OfType<DataOutPort>())
programmableModule.UnderlyingBoard!.Reset();
foreach (DataOutPort outPort in programmableModule.ExplicitPorts.OfType<DataOutPort>())
outPort.DataUpdated = false;
foreach (DataOutPort outPort in programmableModule.ImplicitPorts().OfType<DataOutPort>())
foreach (DataOutPort outPort in programmableModule.ImplicitPorts.OfType<DataOutPort>())
outPort.DataUpdated = false;
}
if (module is ControllingModule controllingModule)
if (module is PiplineModule controllingModule)
controllingModule.Visited = false;
if (module is TerminalModule terminalModule)
terminalModule.Finished = false;
@@ -134,7 +140,7 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
foreach (DataOutPort port in module.Ports.OfType<DataOutPort>())
port.DataUpdated = false;
}
}*/
}
public override bool _CanDropData(Vector2 atPosition, Variant data)