diff --git a/src/DataStructures/IDataPackage.cs b/src/DataStructures/IDataPackage.cs index d5c1090..d9809b0 100644 --- a/src/DataStructures/IDataPackage.cs +++ b/src/DataStructures/IDataPackage.cs @@ -1,12 +1,17 @@ +using System.Numerics; using Godot; using Skeleton.Algebra; using Skeleton.Algebra.DimensionProviders; namespace Nocturnis.DataStructures; using R2 = CategoryOf.OnField.FVector; +using C2 = CategoryOf.OnField.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; } } \ No newline at end of file diff --git a/src/DataStructures/IDataPortGroup.cs b/src/DataStructures/IDataPortGroup.cs index 56791a9..fc18de2 100644 --- a/src/DataStructures/IDataPortGroup.cs +++ b/src/DataStructures/IDataPortGroup.cs @@ -1,8 +1,9 @@ using Godot; +using Nocturnis.Enigmos.Ports; namespace Nocturnis.DataStructures; -public interface IDataPortGroup +public interface IDataPortGroup : IEnumerable { StringName SelectedType { get; set; } StringName[] TypeOptions { get; set; } diff --git a/src/Enigmos/Modules/IBaseModule.cs b/src/Enigmos/Modules/IBaseModule.cs index b799491..c0428f6 100644 --- a/src/Enigmos/Modules/IBaseModule.cs +++ b/src/Enigmos/Modules/IBaseModule.cs @@ -18,5 +18,6 @@ public interface IBaseModule Node AsNode { get; } Vector2 Position { get; set; } string LabelString { get; set; } + void UpdateCables(); } \ No newline at end of file diff --git a/src/Enigmos/Modules/IComputationalCompositeModule.cs b/src/Enigmos/Modules/IComputationalCompositeModule.cs index 3d8f197..5fedf94 100644 --- a/src/Enigmos/Modules/IComputationalCompositeModule.cs +++ b/src/Enigmos/Modules/IComputationalCompositeModule.cs @@ -5,5 +5,5 @@ namespace Nocturnis.Enigmos.Modules; public interface IComputationalCompositeModule : ICompositeModule { void Compute(IRootModule root); - Vector2 PositionToBoard(); + Vector2 PositionToBoard { get; } } diff --git a/src/Enigmos/Modules/IControllingModule.cs b/src/Enigmos/Modules/IControllingModule.cs new file mode 100644 index 0000000..dd3cc51 --- /dev/null +++ b/src/Enigmos/Modules/IControllingModule.cs @@ -0,0 +1,6 @@ +namespace Nocturnis.Enigmos.Modules; + +public interface IControllingModule : IBaseModule +{ + void RouteWithTimeoutHandle(IRootModule root); +} \ No newline at end of file diff --git a/src/Enigmos/Modules/IFilterModule.cs b/src/Enigmos/Modules/IFilterModule.cs new file mode 100644 index 0000000..20e405d --- /dev/null +++ b/src/Enigmos/Modules/IFilterModule.cs @@ -0,0 +1,6 @@ +namespace Nocturnis.Enigmos.Modules; + +public interface IFilterModule : IProgrammableModule +{ + void FilterWithTimeoutHandle(IRootModule root); +} \ No newline at end of file diff --git a/src/Enigmos/Modules/IInterlayerDataInModule.cs b/src/Enigmos/Modules/IInterlayerDataInModule.cs index bbdab44..002566e 100644 --- a/src/Enigmos/Modules/IInterlayerDataInModule.cs +++ b/src/Enigmos/Modules/IInterlayerDataInModule.cs @@ -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; } } \ No newline at end of file diff --git a/src/Enigmos/Modules/IInterlayerDataOutModule.cs b/src/Enigmos/Modules/IInterlayerDataOutModule.cs index 9ac8cd5..5a9a290 100644 --- a/src/Enigmos/Modules/IInterlayerDataOutModule.cs +++ b/src/Enigmos/Modules/IInterlayerDataOutModule.cs @@ -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; } } diff --git a/src/Enigmos/Modules/IInterlayerModule.cs b/src/Enigmos/Modules/IInterlayerModule.cs index fd0eff5..34db93a 100644 --- a/src/Enigmos/Modules/IInterlayerModule.cs +++ b/src/Enigmos/Modules/IInterlayerModule.cs @@ -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; } } diff --git a/src/Enigmos/Modules/IInterlayerSignalInModule.cs b/src/Enigmos/Modules/IInterlayerSignalInModule.cs index 5b3da0d..ff5c938 100644 --- a/src/Enigmos/Modules/IInterlayerSignalInModule.cs +++ b/src/Enigmos/Modules/IInterlayerSignalInModule.cs @@ -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; } } \ No newline at end of file diff --git a/src/Enigmos/Modules/IInterlayerSignalOutModule.cs b/src/Enigmos/Modules/IInterlayerSignalOutModule.cs index b81b42d..8ec7f84 100644 --- a/src/Enigmos/Modules/IInterlayerSignalOutModule.cs +++ b/src/Enigmos/Modules/IInterlayerSignalOutModule.cs @@ -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; } } \ No newline at end of file diff --git a/src/Enigmos/Modules/IKeyListenerModule.cs b/src/Enigmos/Modules/IKeyListenerModule.cs new file mode 100644 index 0000000..ef68c73 --- /dev/null +++ b/src/Enigmos/Modules/IKeyListenerModule.cs @@ -0,0 +1,6 @@ +namespace Nocturnis.Enigmos.Modules; + +public interface IKeyListenerModule +{ + +} \ No newline at end of file diff --git a/src/Enigmos/Modules/IOptimizationModule.cs b/src/Enigmos/Modules/IOptimizationModule.cs new file mode 100644 index 0000000..8cb3a04 --- /dev/null +++ b/src/Enigmos/Modules/IOptimizationModule.cs @@ -0,0 +1,6 @@ +namespace Nocturnis.Enigmos.Modules; + +public interface IOptimizationModule : IProgrammableModule +{ + void OptimizeWithTimeoutHandle(IRootModule root); +} \ No newline at end of file diff --git a/src/Enigmos/Modules/IProgrammableModule.cs b/src/Enigmos/Modules/IProgrammableModule.cs index a89af35..f2d4055 100644 --- a/src/Enigmos/Modules/IProgrammableModule.cs +++ b/src/Enigmos/Modules/IProgrammableModule.cs @@ -1,6 +1,7 @@ +using Godot; + namespace Nocturnis.Enigmos.Modules; -public interface IProgrammableModule +public interface IProgrammableModule : IBaseModule { - } \ No newline at end of file diff --git a/src/Enigmos/Modules/IRootModule.cs b/src/Enigmos/Modules/IRootModule.cs index b3359d4..b50483e 100644 --- a/src/Enigmos/Modules/IRootModule.cs +++ b/src/Enigmos/Modules/IRootModule.cs @@ -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; } + } \ No newline at end of file diff --git a/src/Enigmos/Ports/IBasePort.cs b/src/Enigmos/Ports/IBasePort.cs index 3757f78..768e833 100644 --- a/src/Enigmos/Ports/IBasePort.cs +++ b/src/Enigmos/Ports/IBasePort.cs @@ -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; } diff --git a/src/Enigmos/Ports/IDataInPort.cs b/src/Enigmos/Ports/IDataInPort.cs index c56c3de..f866460 100644 --- a/src/Enigmos/Ports/IDataInPort.cs +++ b/src/Enigmos/Ports/IDataInPort.cs @@ -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); } \ No newline at end of file diff --git a/src/Enigmos/Ports/IDataOutPort.cs b/src/Enigmos/Ports/IDataOutPort.cs index 1553354..bb74e24 100644 --- a/src/Enigmos/Ports/IDataOutPort.cs +++ b/src/Enigmos/Ports/IDataOutPort.cs @@ -1,6 +1,8 @@ +using Nocturnis.DataStructures; + namespace Nocturnis.Enigmos.Ports; -public interface IDataOutPort +public interface IDataOutPort : IDataPort { - + IDataPackage ResultData { get; set; } } \ No newline at end of file diff --git a/src/Enigmos/Ports/IDataPort.cs b/src/Enigmos/Ports/IDataPort.cs index 4da830d..85d5cc2 100644 --- a/src/Enigmos/Ports/IDataPort.cs +++ b/src/Enigmos/Ports/IDataPort.cs @@ -1,6 +1,6 @@ namespace Nocturnis.Enigmos.Ports; -public interface IDataPort +public interface IDataPort : IBasePort { } \ No newline at end of file diff --git a/src/Enigmos/Ports/ISignalInPort.cs b/src/Enigmos/Ports/ISignalInPort.cs index 4f7f899..6847c2b 100644 --- a/src/Enigmos/Ports/ISignalInPort.cs +++ b/src/Enigmos/Ports/ISignalInPort.cs @@ -1,6 +1,8 @@ +using Nocturnis.Enigmos.Modules; + namespace Nocturnis.Enigmos.Ports; -public interface ISignalInPort +public interface ISignalInPort : ISignalPort { - + new IControllingModule Module { get; set; } } \ No newline at end of file diff --git a/src/Enigmos/Ports/ISignalOutPort.cs b/src/Enigmos/Ports/ISignalOutPort.cs index 055ff6d..e1c61d6 100644 --- a/src/Enigmos/Ports/ISignalOutPort.cs +++ b/src/Enigmos/Ports/ISignalOutPort.cs @@ -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; } } \ No newline at end of file diff --git a/src/Enigmos/Ports/ISignalPort.cs b/src/Enigmos/Ports/ISignalPort.cs index 90320fe..fb6cf83 100644 --- a/src/Enigmos/Ports/ISignalPort.cs +++ b/src/Enigmos/Ports/ISignalPort.cs @@ -1,6 +1,6 @@ namespace Nocturnis.Enigmos.Ports; -public interface ISignalPort +public interface ISignalPort : IBasePort { } \ No newline at end of file diff --git a/src/Inventories/ItemSlots/ItemSlots/IChemicalItemSlot.cs b/src/Inventories/ItemSlots/ItemSlots/IChemicalItemSlot.cs index 86b2339..67b1884 100644 --- a/src/Inventories/ItemSlots/ItemSlots/IChemicalItemSlot.cs +++ b/src/Inventories/ItemSlots/ItemSlots/IChemicalItemSlot.cs @@ -4,5 +4,5 @@ namespace Nocturnis.Inventories.ItemSlots.ItemSlots; public interface IChemicalItemSlot { - IBaseChemicalItem Item { get; set; } + IBaseChemicalItem? Item { get; set; } } \ No newline at end of file diff --git a/src/Inventories/Items/Items/IBaseChemicalItem.cs b/src/Inventories/Items/Items/IBaseChemicalItem.cs index a20a410..fd09582 100644 --- a/src/Inventories/Items/Items/IBaseChemicalItem.cs +++ b/src/Inventories/Items/Items/IBaseChemicalItem.cs @@ -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; } } \ No newline at end of file diff --git a/src/Scenes/IRootScene.cs b/src/Scenes/IRootScene.cs index 221523f..e885842 100644 --- a/src/Scenes/IRootScene.cs +++ b/src/Scenes/IRootScene.cs @@ -1,8 +1,10 @@ using Godot; +using Nocturnis.UIElements; namespace Nocturnis.Scenes; public interface IRootScene { void ChangeScene(Node scene); + IKeyListener KeyListener { get; set; } } \ No newline at end of file diff --git a/src/UIElements/IKeyListener.cs b/src/UIElements/IKeyListener.cs new file mode 100644 index 0000000..94ed331 --- /dev/null +++ b/src/UIElements/IKeyListener.cs @@ -0,0 +1,8 @@ +using Nocturnis.Enigmos.Modules; + +namespace Nocturnis.UIElements; + +public interface IKeyListener +{ + void Register(IKeyListenerModule module); +} \ No newline at end of file