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

@@ -0,0 +1,43 @@
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
using Enigmos.Modules.ComputationalModules;
using Nocturnis.GlobalManagement.Constants;
namespace Enigmos.Modules.InterlayerModules;
public partial class FilterOutputModule : NullaryComputationalModule, IInterlayerModule
{
public override Vector2 PositionToBoard => base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
public IFilterModule FilterModule
{
get => (ParentModule as IFilterModule)!;
set => ParentModule = value;
}
public IDataOutPort? Output { get; set; }
public override IEnumerable<IBasePort> Ports => new[] { Output! };
protected override bool Draggable => false;
protected override bool HasManual => false;
public override void Init()
{
base.Init();
this.DataOutInit("Output", 1);
Output = DataOutPorts[0];
PostInit();
}
public override void Define()
{
FilterModule.Filter();
Output!.OutData.UpdateCalculation(
cache => (FilterModule.CachedResult, EnigmosConstant.DataPortTypes.AnyArrayType)
);
}
public IBasePort UnderlyingPort => Output!;
public IProgrammableModule? ParentModule { get; set; }
}

View File

@@ -1,7 +1,8 @@
using Enigmos.Ports.DataPorts;
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
namespace Enigmos.Modules.InterlayerModules;
public partial class InterlayerDataInModule : BaseModule, IInterlayerDataInModule
@@ -14,11 +15,14 @@ public partial class InterlayerDataInModule : BaseModule, IInterlayerDataInModul
public IInterlayerDataOutModule? DualModule { get; set; }
public IDataInPort? DataIn { get; set; }
public override IEnumerable<IBasePort> Ports => new[] { DataIn }!;
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
public override void Init()
{
base.Init();
DataIn = GetPort<DataInPort>("DataIn");
this.DataInInit("DataIn", 1);
DataIn = DataInPorts[0];
PostInit();
}
}

View File

@@ -1,8 +1,10 @@
using Enigmos.Modules.ComputationalModules;
using Enigmos.Ports.DataPorts;
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
namespace Enigmos.Modules.InterlayerModules;
@@ -21,12 +23,14 @@ public partial class InterlayerDataOutModule : ComputationalModule, IInterlayerD
public override void Init()
{
base.Init();
DataOut = GetPort<DataOutPort>("DataOut");
this.DataOutInit("DataOut", 1);
DataOut = DataOutPorts[0];
PostInit();
}
protected override void Compute(IRootModule root)
public override void Define()
{
DataOut!.ResultData = DualModule!.DataIn!.GetData(root);
DataOut!.OutData = DualModule!.DataIn!.GetData;
}
}

View File

@@ -1,12 +1,12 @@
using Enigmos.Modules.ControllingModules;
using Enigmos.Ports.SignalPorts;
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.SignalPorts.Directions;
namespace Enigmos.Modules.InterlayerModules;
public partial class InterlayerSignalInModule : ControllingModule, IInterlayerSignalInModule
public partial class InterlayerSignalInModule : BaseModule, IInterlayerSignalInModule
{
public override Vector2 PositionToBoard => base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
public IProgrammableModule? ParentModule { get; set; }
@@ -16,13 +16,16 @@ public partial class InterlayerSignalInModule : ControllingModule, IInterlayerSi
public IInterlayerSignalOutModule? DualModule { get; set; }
public ISignalInPort? SignalIn { get; set; }
public override IEnumerable<IBasePort> Ports => new[] { SignalIn }!;
public ISignalInPort[] SignalInPorts { get; set; } = Array.Empty<ISignalInPort>();
public override void Init()
{
base.Init();
SignalIn = GetPort<SignalInPort>("SignalIn");
this.SignalInInit("SignalIn", 1);
SignalIn = SignalInPorts[0];
PostInit();
}
protected override void Route(IRootModule root) => DualModule!.SignalOut!.Module.RouteWithTimeoutHandle(root);
public void Execute() => DualModule!.SignalOut!.Route();
public bool Visited { get; set; }
}

View File

@@ -1,17 +1,15 @@
using Enigmos.Modules.ControllingModules;
using Enigmos.Modules.ProgrammableModules;
using Enigmos.Ports;
using Enigmos.Ports.SignalPorts;
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.SignalPorts.Directions;
namespace Enigmos.Modules.InterlayerModules;
public partial class InterlayerSignalOutModule : ControllingModule, IInterlayerSignalOutModule
public partial class InterlayerSignalOutModule : BaseModule, IInterlayerSignalOutModule
{
public override Vector2 PositionToBoard => base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
public override Vector2 PositionToBoard =>
base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
public IProgrammableModule? ParentModule { get; set; }
protected override bool Draggable => false;
protected override bool HasManual => false;
@@ -20,17 +18,16 @@ public partial class InterlayerSignalOutModule : ControllingModule, IInterlayerS
public ISignalOutPort? SignalOut { get; set; }
public override IEnumerable<IBasePort> Ports => new[] { SignalOut }!;
public ISignalOutPort[] SignalOutPorts { get; set; } = Array.Empty<ISignalOutPort>();
public override void Init()
{
base.Init();
SignalOut = GetPort<SignalOutPort>("SignalOut");
this.SignalOutInit("SignalOut", 1);
SignalOut = SignalOutPorts[0];
PostInit();
}
protected override void Route(IRootModule root)
{
if (!SignalOut!.Connected)
return;
SignalOut.ConnectedPort!.Module.RouteWithTimeoutHandle(root);
}
public bool Visited { get; set; }
}

View File

@@ -0,0 +1,39 @@
using Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
using Nocturnis.GlobalManagement.Constants;
namespace Enigmos.Modules.InterlayerModules;
public partial class IterativeOutputModule : NullaryComputationalModule, IInterlayerModule, IDuplicateOutputModule
{
protected override bool Draggable => false;
protected override bool HasManual => false;
public IDataOutPort? Output { get; set; }
public override IEnumerable<IBasePort> Ports => new[] { Output }!;
public override void Init()
{
base.Init();
this.DataOutInit("DataOut", 1);
Output = DataOutPorts[0];
PostInit();
}
public override void Define()
{
if (ParentModule is IOptimizationModule opm)
this.Define(cache => (opm.CachedResult.Data, opm.CachedResult.Type)!);
if (ParentModule is IFilterModule fm)
this.Define(cache => (fm.CachedResult, EnigmosConstant.DataPortTypes.AnyArrayType));
}
//protected override void Compute(IRootModule root) => throw new Exception("Should be Handled by Other Module");
public IBasePort UnderlyingPort => Output!;
public IProgrammableModule? ParentModule { get; set; }
}

View File

@@ -0,0 +1,42 @@
using Enigmos.Modules.ComputationalModules;
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
namespace Enigmos.Modules.InterlayerModules;
public partial class OptimizationItemOutputModule : NullaryComputationalModule, IInterlayerModule
{
public override Vector2 PositionToBoard =>
base.PositionToBoard + (OptimizationModule?.PositionToBoard ?? Vector2.Zero);
protected override bool Draggable => false;
protected override bool HasManual => false;
public IOptimizationModule OptimizationModule
{
get => (ParentModule as IOptimizationModule)!;
set => ParentModule = value;
}
public IDataOutPort DataOut { get; set; }
public override IEnumerable<IBasePort> Ports => new[] { DataOut };
//protected override void Compute(IRootModule root) => OptimizationModule.OptimizeWithTimeoutHandle(root);
public override void Init()
{
base.Init();
this.DataOutInit("DataOut", 1);
DataOut = DataOutPorts[0];
PostInit();
}
public IBasePort UnderlyingPort => DataOut;
public IProgrammableModule? ParentModule { get; set; }
public override void Define()
{
IOptimizationModule im = (ParentModule as IOptimizationModule)!;
DataOut.OutData.UpdateCalculation(cache => (im.CachedResult.Data, im.CachedResult.Type)!);
}
}

View File

@@ -0,0 +1,44 @@
using Enigmos.Modules.ComputationalModules;
using Enigmos.Ports;
using Enigmos.Ports.DataPorts;
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Modules.InterlayerModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.GlobalManagement.Constants;
namespace Enigmos.Modules.InterlayerModules;
public partial class OptimizationValueOutputModule : NullaryComputationalModule,
IInterlayerModule,
IDuplicateOutputModule
{
public override Vector2 PositionToBoard =>
base.PositionToBoard + (OptimizationModule?.PositionToBoard ?? Vector2.Zero);
protected override bool Draggable => false;
protected override bool HasManual => false;
public DataOutPort? DataOut { get; set; }
public IOptimizationModule OptimizationModule
{
get => (ParentModule as IOptimizationModule)!;
set => ParentModule = value;
}
public override IEnumerable<BasePort> Ports => new[] { DataOut }!;
public override void Init()
{
base.Init();
this.DataOutInit("DataOut", 1);
DataOut.SetDataType(EnigmosConstant.DataPortTypes.Real);
PostInit();
}
public override void Define()
{
this.Define(cache => (OptimizationModule.CachedResult.Data, OptimizationModule.CachedResult.Type) );
}
public IBasePort UnderlyingPort => DataOut;
public IProgrammableModule? ParentModule { get; set; }
}