Upgrade structure of code base
This commit is contained in:
10
src/Enigmos/Ports/DataPorts/Directions/IDataInPort.cs
Normal file
10
src/Enigmos/Ports/DataPorts/Directions/IDataInPort.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Nocturnis.DataStructures;
|
||||
using Skeleton.DataStructure;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
|
||||
public interface IDataInPort : IDataPort
|
||||
{
|
||||
DataCache GetData { get; }
|
||||
new IDataOutPort? ConnectedPort { get; set; }
|
||||
}
|
||||
13
src/Enigmos/Ports/DataPorts/Directions/IDataOutPort.cs
Normal file
13
src/Enigmos/Ports/DataPorts/Directions/IDataOutPort.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Nocturnis.DataStructures;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
using Skeleton.DataStructure;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
|
||||
public interface IDataOutPort : IDataPort
|
||||
{
|
||||
new IDataInPort? ConnectedPort { get; set; }
|
||||
new IComputationalModule Module { get; set; }
|
||||
DataCache OutData { get; set; }
|
||||
}
|
||||
6
src/Enigmos/Ports/DataPorts/EDataPort.cs
Normal file
6
src/Enigmos/Ports/DataPorts/EDataPort.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Nocturnis.Enigmos.Ports.DataPorts;
|
||||
|
||||
public class EDataPort
|
||||
{
|
||||
|
||||
}
|
||||
10
src/Enigmos/Ports/DataPorts/IDataPort.cs
Normal file
10
src/Enigmos/Ports/DataPorts/IDataPort.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Godot;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports.DataPorts;
|
||||
|
||||
public interface IDataPort : IBasePort
|
||||
{
|
||||
new IDataPort? ConnectedPort { get; set; }
|
||||
StringName? DataType { get; set; }
|
||||
void SetDataType(StringName type);
|
||||
}
|
||||
67
src/Enigmos/Ports/EBasePort.cs
Normal file
67
src/Enigmos/Ports/EBasePort.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Cables;
|
||||
using Nocturnis.Inventories.Items.Items;
|
||||
using VirtualChemistry.Chemistry.Mixtures.Implements;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
|
||||
public static class EBasePort
|
||||
{
|
||||
public static void FixWith(this IBasePort p, IBaseChemicalItem c)
|
||||
{
|
||||
if (c.ContentMaterial.Amount == 0)
|
||||
return;
|
||||
HeterogeneousMixture material = c.ContentMaterial;
|
||||
double s = 1; //material.LayerOrder.Last.Value.CayleyValue();
|
||||
double u = 1;//material.LayerOrder.Last.Value.EuclidValue();
|
||||
double usedAmount = Math.Min(1d, material.LayerOrder.Last.Value.Amount);
|
||||
double dCond = usedAmount * (p.Module!.MaintenanceAlpha * s - p.Module.MaintenanceBeta * u);
|
||||
double dQuality = usedAmount * (Math.Pow(p.Module.MaintenanceBeta, 2) * s - p.Module.MaintenanceAlpha * u);
|
||||
c.ConsumeFromBottom(usedAmount);
|
||||
p.Condition = Mathf.FloorToInt(Math.Max(0, Math.Min(100, p.Condition + dCond)));
|
||||
p.Quality = Mathf.FloorToInt(Math.Max(0, Math.Min(20000, p.Quality + dQuality)));
|
||||
}
|
||||
public static void Connect(this IBasePort p)
|
||||
{
|
||||
if(p.Connected)
|
||||
p.Disconnect();
|
||||
if (p.Module!.Board!.ConnectPending == null)
|
||||
{
|
||||
p.SetStatusPending();
|
||||
p.Module.Board.ConnectPending = p;
|
||||
return;
|
||||
}
|
||||
|
||||
if (p.Module.Board.ConnectPending.IsMatch(p))
|
||||
{
|
||||
p.ConnectedPort = p.Module.Board.ConnectPending;
|
||||
p.Module.Board.ConnectPending.ConnectedPort = p;
|
||||
IBaseCable cable = p.MakeCable(p.Module.Board.ConnectPending);
|
||||
p.Module.Board.CablePairing[p] = cable;
|
||||
p.Module.Board.CablePairing[p.Module.Board.ConnectPending] = cable;
|
||||
p.Module.Board.AddCable(cable);
|
||||
cable.LineUpdate();
|
||||
p.SetStatusConnected();
|
||||
p.Module.Board.ConnectPending.SetStatusConnected();
|
||||
p.Module.Board.ConnectPending = null;
|
||||
return;
|
||||
}
|
||||
p.Module.Board.ConnectPending.SetStatusNormal();
|
||||
p.Module.Board.ConnectPending = null;
|
||||
}
|
||||
public static void Disconnect(this IBasePort p)
|
||||
{
|
||||
if (!p.Connected)
|
||||
return;
|
||||
IBaseCable cable = p.Module!.Board!.CablePairing[p];
|
||||
p.Module.Board.CablePairing.Remove(p.ConnectedPort!);
|
||||
p.Module.Board.FocusedCables.Remove(p.Module.Board.CablePairing[p]);
|
||||
p.Module.Board.CablePairing.Remove(p);
|
||||
|
||||
cable.Free();
|
||||
p.ConnectedPort!.SetStatusNormal();
|
||||
p.ConnectedPort.ConnectedPort = null;
|
||||
p.SetStatusNormal();
|
||||
p.ConnectedPort = null;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Cables;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Inventories.Items.Items;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
|
||||
public interface IBasePort
|
||||
{
|
||||
bool Connected { get; }
|
||||
IBaseModule Module { get; set; }
|
||||
IBaseModule? Module { get; set; }
|
||||
bool IsMatch(IBasePort oth);
|
||||
IBasePort? ConnectedPort { get; set; }
|
||||
void SetStatusConnected();
|
||||
@@ -16,5 +16,7 @@ public interface IBasePort
|
||||
StringName Name { get; set; }
|
||||
int Condition { get; set; }
|
||||
int Quality { get; set; }
|
||||
void FixWith(IBaseChemicalItem item);
|
||||
}
|
||||
//void FixWith(IBaseChemicalItem item);
|
||||
void Init();
|
||||
IBaseCable MakeCable(IBasePort port);
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
using Nocturnis.DataStructures;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
|
||||
public interface IDataInPort : IDataPort
|
||||
{
|
||||
IDataPackage GetData(IRootModule root);
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
using Nocturnis.DataStructures;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
|
||||
public interface IDataOutPort : IDataPort
|
||||
{
|
||||
IDataPackage ResultData { get; set; }
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
|
||||
public interface IDataPort : IBasePort
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
namespace Nocturnis.Enigmos.Ports.SignalPorts.Directions;
|
||||
|
||||
public interface ISignalInPort : ISignalPort
|
||||
{
|
||||
@@ -1,9 +1,11 @@
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
namespace Nocturnis.Enigmos.Ports.SignalPorts.Directions;
|
||||
|
||||
public interface ISignalOutPort : ISignalPort
|
||||
{
|
||||
new IControllingModule Module { get; set; }
|
||||
new IRoutingModule Module { get; set; }
|
||||
new ISignalInPort? ConnectedPort { get; set; }
|
||||
void Route();
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Nocturnis.Enigmos.Ports;
|
||||
namespace Nocturnis.Enigmos.Ports.SignalPorts;
|
||||
|
||||
public interface ISignalPort : IBasePort
|
||||
{
|
||||
Reference in New Issue
Block a user