Split project

This commit is contained in:
h z
2024-06-29 06:35:23 +08:00
commit 6e01c31061
54 changed files with 496 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
using Nocturnis.Enigmos.Cables;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.UIElements.Layers;
namespace Nocturnis.Enigmos.Boards;
public interface IBaseBoard
{
IBasePort? ConnectPending { get; set; }
Dictionary<IBasePort, IBaseCable> CablePairing { get; set; }
void AddCable(IBaseCable cable);
HashSet<IBaseCable> FocusedCables { get; set; }
bool ManualOpened { get; set; }
bool CableVisualMode { get; set; }
IModuleManualLayer ModuleManualLayer { get; set; }
IModuleMovingLayer ModuleMovingLayer { get; set; }
}

View File

@@ -0,0 +1,11 @@
using Godot;
namespace Nocturnis.Enigmos.Cables;
public interface IBaseCable
{
void Free();
void LineUpdate();
Color Modulate { get; set; }
Node AsNode { get; }
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.ModuleManuals;
public interface IModuleManualTab
{
string FullName();
}

View File

@@ -0,0 +1,22 @@
using Godot;
using Nocturnis.Enigmos.Boards;
using Nocturnis.Enigmos.Ports;
using Nocturnis.UIElements;
namespace Nocturnis.Enigmos.Modules;
public interface IBaseModule
{
IEnumerable<IBasePort> Ports { get; }
IBaseBoard Board { get; set; }
Vector2 PositionToBoard { get; }
Vector2 Size { get; set; }
double MaintenanceAlpha { get; }
double MaintenanceBeta { get; }
string GetDescription { get; }
ISimpleLabel Label { get; }
Node AsNode { get; }
Vector2 Position { get; set; }
string LabelString { get; set; }
}

View File

@@ -0,0 +1,13 @@
using Godot;
using Nocturnis.Communicators;
using Nocturnis.DataStructures;
namespace Nocturnis.Enigmos.Modules;
public interface ICommunicateModule
{
IBaseCommunicator PairedCommunicator { get; set; }
StringName CommunicationDataType { get; }
StringName CommunicationDirection { get; }
IDataPackage DataBuffer { get; set; }
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules;
public interface ICompositeModule
{
IBaseModule[] SubModules();
}

View File

@@ -0,0 +1,9 @@
using Godot;
namespace Nocturnis.Enigmos.Modules;
public interface IComputationalCompositeModule : ICompositeModule
{
void Compute(IRootModule root);
Vector2 PositionToBoard();
}

View File

@@ -0,0 +1,8 @@
namespace Nocturnis.Enigmos.Modules;
public interface IErrorHandlerModule
{
void ErrorHandler(Exception error, int idx);
string[] HandlingOptions();
int SelectedOption { get; set; }
}

View File

@@ -0,0 +1,9 @@
using Nocturnis.Enigmos.Ports;
namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerDataInModule : IInterlayerModule
{
IInterlayerDataOutModule DualModule { get; set; }
IDataInPort DataIn { get; set; }
}

View File

@@ -0,0 +1,9 @@
using Nocturnis.Enigmos.Ports;
namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerDataOutModule : IInterlayerModule
{
IInterlayerDataInModule DualModule { get; set; }
IDataOutPort DataOut { get; set; }
}

View File

@@ -0,0 +1,10 @@
using Nocturnis.Enigmos.Ports;
namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerModule
{
IBasePort UnderlyingPort();
IProgrammableModule ParentModule { get; set; }
}

View File

@@ -0,0 +1,9 @@
using Nocturnis.Enigmos.Ports;
namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerSignalInModule : IInterlayerModule
{
IInterlayerSignalOutModule DualModule { get; set; }
ISignalInPort SignalIn { get; set; }
}

View File

@@ -0,0 +1,9 @@
using Nocturnis.Enigmos.Ports;
namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerSignalOutModule : IInterlayerModule
{
IInterlayerSignalInModule DualModule { get; set; }
ISignalOutPort SignalOut { get; set; }
}

View File

@@ -0,0 +1,10 @@
using Nocturnis.DataStructures;
using Nocturnis.DataStructures.ConfigurableParameters;
namespace Nocturnis.Enigmos.Modules;
public interface IParameterizedModule
{
HashSet<IConfigurableParameter> ConfigurableParameters { get; set; }
}

View File

@@ -0,0 +1,12 @@
using Nocturnis.DataStructures;
namespace Nocturnis.Enigmos.Modules;
public interface IPolymorphismModule
{
HashSet<IDataPortGroup> ConfigurablePortGroups { get; set; }
/// <summary>
/// Update type of all ports base on configurable port groups' type
/// </summary>
void Inference();
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules;
public interface IProgrammableModule
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules;
public interface IRootModule
{
}

View File

@@ -0,0 +1,19 @@
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Inventories.Items.Items;
namespace Nocturnis.Enigmos.Ports;
public interface IBasePort
{
IBaseModule Module { get; set; }
bool IsMatch(IBasePort oth);
IBasePort? ConnectedPort { get; set; }
void SetStatusConnected();
void SetStatusNormal();
void SetStatusPending();
StringName Name { get; set; }
int Condition { get; set; }
int Quality { get; set; }
void FixWith(IBaseChemicalItem item);
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Ports;
public interface IDataInPort
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Ports;
public interface IDataOutPort
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Ports;
public interface IDataPort
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Ports;
public interface ISignalInPort
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Ports;
public interface ISignalOutPort
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Ports;
public interface ISignalPort
{
}