project update

This commit is contained in:
h z
2024-06-30 01:52:44 +08:00
parent 6e01c31061
commit d382481cd4
26 changed files with 92 additions and 30 deletions

View File

@@ -1,12 +1,17 @@
using System.Numerics;
using Godot;
using Skeleton.Algebra;
using Skeleton.Algebra.DimensionProviders;
namespace Nocturnis.DataStructures;
using R2 = CategoryOf<IDim2>.OnField<double>.FVector;
using C2 = CategoryOf<IDim2>.OnField<Complex>.FVector;
public interface IDataPackage
{
void Assign(IDataPackage val, StringName key);
bool Bit { get; }
R2 R2 { get; }
bool Bit { get; set; }
double Real { get; set; }
Complex Complex { get; set; }
R2 R2 { get; set; }
C2 C2 { get; set; }
}

View File

@@ -1,8 +1,9 @@
using Godot;
using Nocturnis.Enigmos.Ports;
namespace Nocturnis.DataStructures;
public interface IDataPortGroup
public interface IDataPortGroup : IEnumerable<IDataPort>
{
StringName SelectedType { get; set; }
StringName[] TypeOptions { get; set; }

View File

@@ -18,5 +18,6 @@ public interface IBaseModule
Node AsNode { get; }
Vector2 Position { get; set; }
string LabelString { get; set; }
void UpdateCables();
}

View File

@@ -5,5 +5,5 @@ namespace Nocturnis.Enigmos.Modules;
public interface IComputationalCompositeModule : ICompositeModule
{
void Compute(IRootModule root);
Vector2 PositionToBoard();
Vector2 PositionToBoard { get; }
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules;
public interface IControllingModule : IBaseModule
{
void RouteWithTimeoutHandle(IRootModule root);
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules;
public interface IFilterModule : IProgrammableModule
{
void FilterWithTimeoutHandle(IRootModule root);
}

View File

@@ -4,6 +4,6 @@ namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerDataInModule : IInterlayerModule
{
IInterlayerDataOutModule DualModule { get; set; }
IDataInPort DataIn { get; set; }
IInterlayerDataOutModule? DualModule { get; set; }
IDataInPort? DataIn { get; set; }
}

View File

@@ -4,6 +4,6 @@ namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerDataOutModule : IInterlayerModule
{
IInterlayerDataInModule DualModule { get; set; }
IDataOutPort DataOut { get; set; }
IInterlayerDataInModule? DualModule { get; set; }
IDataOutPort? DataOut { get; set; }
}

View File

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

View File

@@ -4,6 +4,6 @@ namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerSignalInModule : IInterlayerModule
{
IInterlayerSignalOutModule DualModule { get; set; }
ISignalInPort SignalIn { get; set; }
IInterlayerSignalOutModule? DualModule { get; set; }
ISignalInPort? SignalIn { get; set; }
}

View File

@@ -4,6 +4,6 @@ namespace Nocturnis.Enigmos.Modules;
public interface IInterlayerSignalOutModule : IInterlayerModule
{
IInterlayerSignalInModule DualModule { get; set; }
ISignalOutPort SignalOut { get; set; }
IInterlayerSignalInModule? DualModule { get; set; }
ISignalOutPort? SignalOut { get; set; }
}

View File

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

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules;
public interface IOptimizationModule : IProgrammableModule
{
void OptimizeWithTimeoutHandle(IRootModule root);
}

View File

@@ -1,6 +1,7 @@
using Godot;
namespace Nocturnis.Enigmos.Modules;
public interface IProgrammableModule
public interface IProgrammableModule : IBaseModule
{
}

View File

@@ -1,6 +1,12 @@
using System.Diagnostics;
using Nocturnis.Creatures;
namespace Nocturnis.Enigmos.Modules;
public interface IRootModule
public interface IRootModule : IControllingModule
{
Stopwatch? Timer { get; set; }
bool ActionFinished { get; set; }
IBaseCreature ManagedBy { get; set; }
}

View File

@@ -6,6 +6,7 @@ namespace Nocturnis.Enigmos.Ports;
public interface IBasePort
{
bool Connected { get; }
IBaseModule Module { get; set; }
bool IsMatch(IBasePort oth);
IBasePort? ConnectedPort { get; set; }

View File

@@ -1,6 +1,9 @@
using Nocturnis.DataStructures;
using Nocturnis.Enigmos.Modules;
namespace Nocturnis.Enigmos.Ports;
public interface IDataInPort
public interface IDataInPort : IDataPort
{
IDataPackage GetData(IRootModule root);
}

View File

@@ -1,6 +1,8 @@
using Nocturnis.DataStructures;
namespace Nocturnis.Enigmos.Ports;
public interface IDataOutPort
public interface IDataOutPort : IDataPort
{
IDataPackage ResultData { get; set; }
}

View File

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

View File

@@ -1,6 +1,8 @@
using Nocturnis.Enigmos.Modules;
namespace Nocturnis.Enigmos.Ports;
public interface ISignalInPort
public interface ISignalInPort : ISignalPort
{
new IControllingModule Module { get; set; }
}

View File

@@ -1,6 +1,9 @@
using Nocturnis.Enigmos.Modules;
namespace Nocturnis.Enigmos.Ports;
public interface ISignalOutPort
public interface ISignalOutPort : ISignalPort
{
new IControllingModule Module { get; set; }
new ISignalInPort? ConnectedPort { get; set; }
}

View File

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

View File

@@ -4,5 +4,5 @@ namespace Nocturnis.Inventories.ItemSlots.ItemSlots;
public interface IChemicalItemSlot
{
IBaseChemicalItem Item { get; set; }
IBaseChemicalItem? Item { get; set; }
}

View File

@@ -6,4 +6,7 @@ public interface IBaseChemicalItem : IBaseItem
{
HeterogeneousMixture ContentMaterial { get; set; }
void ConsumeFromBottom(double amount);
double Amount { get; }
double BottomAmount { get; }
double BottomViscosity { get; }
}

View File

@@ -1,8 +1,10 @@
using Godot;
using Nocturnis.UIElements;
namespace Nocturnis.Scenes;
public interface IRootScene
{
void ChangeScene(Node scene);
IKeyListener KeyListener { get; set; }
}

View File

@@ -0,0 +1,8 @@
using Nocturnis.Enigmos.Modules;
namespace Nocturnis.UIElements;
public interface IKeyListener
{
void Register(IKeyListenerModule module);
}