Upgrade structure of code base
This commit is contained in:
@@ -1,53 +0,0 @@
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Inventories.ItemSlots.ItemSlots;
|
||||
using Skeleton.Algebra.Extensions;
|
||||
using Skeleton.Utils.Helpers;
|
||||
using TabulaSmaragdina.Constants;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
public partial class EngineControllingModule : BaseModule
|
||||
{
|
||||
protected override bool Draggable => false;
|
||||
public DataInPort Throttle { get; set; }
|
||||
public IChemicalItemSlot FuelTank { get; set; }
|
||||
private double MaxPumpSpeed => 2d;
|
||||
private double EnergyConversionEfficiency => 0.5d;
|
||||
public override IEnumerable<BasePort> Ports => new[] { Throttle };
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
Throttle = GetPort<DataInPort>("Throttle");
|
||||
Throttle.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
FuelTank = GetNode<IChemicalItemSlot>("FuelTank");
|
||||
PostInit();
|
||||
}
|
||||
|
||||
public double Combust(RootModule root)
|
||||
{
|
||||
if (FuelTank.Item == null)
|
||||
return 0d;
|
||||
if (FuelTank.Item.Amount <= 0)
|
||||
return 0d;
|
||||
double fuelAmount = Mathf.Min(
|
||||
FuelTank.Item.BottomAmount,
|
||||
Throttle.GetData(root).Real.DoubleCut() * MaxPumpSpeed * (1 - FuelTank.Item.BottomViscosity)
|
||||
);
|
||||
if (fuelAmount == 0)
|
||||
{
|
||||
//TODO Drain fuel from pipeline
|
||||
}
|
||||
|
||||
double res =
|
||||
fuelAmount * FuelTank.Item.ContentMaterial.LayerOrder.Last.Value.Energy * EnergyConversionEfficiency;
|
||||
FuelTank.Item.ConsumeFromBottom(fuelAmount);
|
||||
if (FuelTank.Item.Amount.IsEqualApprox(0d))
|
||||
{
|
||||
//TODO Try get fuel
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
|
||||
using Enigmos.Modules.ComputationalModules;
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Modules.ProgrammableModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
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 DataOutPort Output { get; set; }
|
||||
public override IEnumerable<BasePort> Ports => new[] { Output };
|
||||
protected override bool Draggable => false;
|
||||
protected override bool HasManual => false;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
Output = GetPort<DataOutPort>("Output");
|
||||
PostInit();
|
||||
}
|
||||
|
||||
protected override void Compute(IRootModule root) => FilterModule.FilterWithTimeoutHandle(root);
|
||||
public IBasePort UnderlyingPort => Output;
|
||||
public IProgrammableModule? ParentModule { get; set; }
|
||||
}
|
||||
@@ -1,20 +1,22 @@
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
public partial class IndicateInputModule : BaseModule
|
||||
public partial class IndicateInputModule : BaseModule, IParameterModule
|
||||
{
|
||||
public DataInPort Input { get; set; }
|
||||
public IDataInPort? Input { get; set; }
|
||||
protected override bool Draggable => false;
|
||||
protected override bool HasManual => false;
|
||||
public override IEnumerable<BasePort> Ports => new[] { Input };
|
||||
public override IEnumerable<IBasePort> Ports => new[] { Input! };
|
||||
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
Input = GetPort<DataInPort>("Input");
|
||||
this.DataInInit("Input", 1);
|
||||
Input = DataInPorts[0];
|
||||
PostInit();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
using Enigmos.Modules.ComputationalModules;
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Modules.ProgrammableModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
public partial class IterativeOutputModule : NullaryComputationalModule, IInterlayerModule
|
||||
{
|
||||
protected override bool Draggable => false;
|
||||
protected override bool HasManual => false;
|
||||
public DataOutPort? Output { get; set; }
|
||||
|
||||
public override IEnumerable<BasePort> Ports => new[] { Output }!;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
Output = GetPort<DataOutPort>("DataOut");
|
||||
PostInit();
|
||||
}
|
||||
|
||||
|
||||
protected override void Compute(IRootModule root) => throw new Exception("Should be Handled by Other Module");
|
||||
public IBasePort UnderlyingPort => Output!;
|
||||
public IProgrammableModule? ParentModule { get; set; }
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
|
||||
using Enigmos.Modules.ComputationalModules;
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Modules.ProgrammableModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
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 DataOutPort DataOut { get; set; }
|
||||
|
||||
public override IEnumerable<BasePort> Ports => new[] { DataOut };
|
||||
protected override void Compute(IRootModule root) => OptimizationModule.OptimizeWithTimeoutHandle(root);
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
DataOut = GetPort<DataOutPort>("DataOut");
|
||||
PostInit();
|
||||
}
|
||||
|
||||
public IBasePort UnderlyingPort => DataOut;
|
||||
public IProgrammableModule? ParentModule { get; set; }
|
||||
}
|
||||
@@ -1,20 +1,23 @@
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using TabulaSmaragdina.Constants;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
public partial class OptimizationValueInputModule : BaseModule
|
||||
public partial class OptimizationValueInputModule : BaseModule, IParameterModule
|
||||
{
|
||||
protected override bool Draggable => false;
|
||||
protected override bool HasManual => false;
|
||||
public DataInPort DataIn { get; set; }
|
||||
public override IEnumerable<BasePort> Ports => new[] { DataIn };
|
||||
public IDataInPort? DataIn { get; set; }
|
||||
public override IEnumerable<IBasePort> Ports => new[] { DataIn! };
|
||||
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
DataIn = GetPort<DataInPort>("DataIn");
|
||||
base.Init();
|
||||
this.DataInInit("DataIn", 1);
|
||||
DataIn = DataInPorts[0];
|
||||
DataIn.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
DataIn.Module = this;
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
using Enigmos.Modules.ComputationalModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using TabulaSmaragdina.Constants;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
public partial class OptimizationValueOutputModule : NullaryComputationalModule, IInterlayerModule
|
||||
{
|
||||
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();
|
||||
DataOut = GetPort<DataOutPort>("DataOut");
|
||||
DataOut.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
PostInit();
|
||||
}
|
||||
|
||||
protected override void Compute(IRootModule root) =>
|
||||
OptimizationModule.OptimizeWithTimeoutHandle(root);
|
||||
|
||||
public IBasePort UnderlyingPort => DataOut;
|
||||
public IProgrammableModule? ParentModule { get; set; }
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
using Enigmos.Modules.ComputationalModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using TabulaSmaragdina.Constants;
|
||||
using Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
|
||||
namespace Enigmos.Modules.Other;
|
||||
|
||||
@@ -13,16 +14,22 @@ public partial class OutputSubModule : NullaryComputationalModule
|
||||
base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
|
||||
protected override bool Draggable => false;
|
||||
protected override bool HasManual => false;
|
||||
public override IEnumerable<BasePort> Ports => new[] { DataOut };
|
||||
public IComputationalCompositeModule ParentModule { get; set; }
|
||||
public DataOutPort DataOut { get; set; }
|
||||
protected override void Compute(IRootModule root) => ParentModule.Compute(root);
|
||||
public override IEnumerable<IBasePort> Ports => new[] { DataOut };
|
||||
public IComputationalCompositeModule? ParentModule { get; set; }
|
||||
public IDataOutPort? DataOut { get; set; }
|
||||
|
||||
public override void Define()
|
||||
{
|
||||
//DataOut = ParentModule
|
||||
}
|
||||
|
||||
//protected override void Compute(IRootModule root) => ParentModule.Compute(root);
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
DataOut = GetPort<DataOutPort>("DataOut");
|
||||
this.DataOutInit("DataOut", 1);
|
||||
DataOut = DataOutPorts[0];
|
||||
DataOut.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
PostInit();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user