This commit is contained in:
h z
2024-07-12 14:32:16 +01:00
parent 5548a7243b
commit 1df3c08a9e
20 changed files with 119 additions and 148 deletions

View File

@@ -1,9 +1,9 @@
using Enigmos.Exceptions;
using Enigmos.Manual;
using Godot;
using Nocturnis;
using Nocturnis.DataStructures;
using Nocturnis.Enigmos.Boards;
using Nocturnis.Enigmos.Cables;
using Nocturnis.Enigmos.ModuleManuals;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.GlobalManagement.Providers;
@@ -15,7 +15,8 @@ public abstract partial class BaseModule : TextureRect, IBaseModule
[Export] private int PresetPortQuality { get; set; }
[Export] private int PresetPortCondition { get; set; }
[Export] protected bool UsingPreset { get; set; }
[Export] public IPresetModuleConnection[] PresetConnections { get; set; } = Array.Empty<IPresetModuleConnection>();
//[Export]
public IPresetModuleConnection[] PresetConnections { get; set; } = Array.Empty<IPresetModuleConnection>();
[Export] public string LabelString { get; set; } = "";
public virtual Vector2 PositionToBoard => Position;
@@ -24,9 +25,9 @@ public abstract partial class BaseModule : TextureRect, IBaseModule
public bool HasLabel => HasManual;
public virtual IEnumerable<IBasePort> Ports => GetChildren().OfType<IBasePort>();
public IBaseBoard? Board { get; set; }
private ModuleManual? Manual { get; set; }
public Label? Label { get; set; }
public IBaseBoard Board { get; set; }
public IModuleManual Manual { get; set; }
public Label Label { get; set; }
public Node AsNode => this;
public virtual void PresetValueInit()
@@ -82,15 +83,6 @@ public abstract partial class BaseModule : TextureRect, IBaseModule
PresetValueInit();
}
protected virtual void TimeoutCheck(IRootModule root)
{
if (root.Timer!.ElapsedMilliseconds < 25) return;
root.Timer.Stop();
throw ModuleExecutionTimeout.Exception;
}
protected virtual void TimeoutHandler(ModuleExecutionTimeout timeout) => throw timeout;
public override Variant _GetDragData(Vector2 atPosition)
{
if (!Draggable)
@@ -99,7 +91,6 @@ public abstract partial class BaseModule : TextureRect, IBaseModule
Board!.ModuleMovingLayer.MouseOffset = GetLocalMousePosition();
return GlobalProvider.DataStructureProvider!.NewVariantWithType("Module", this);
}
public override void _Input(InputEvent @event)
{
if (@event is InputEventMouseButton eventMouseButton)
@@ -109,19 +100,11 @@ public abstract partial class BaseModule : TextureRect, IBaseModule
{
if (eventMouseButton.ButtonIndex == MouseButton.Right && eventMouseButton.Pressed)
{
if (!HasManual)
return;
if (Board!.ManualOpened)
if (!HasManual || Board!.ManualOpened)
return;
if (Manual == null)
{
Manual = GlobalProvider
.AssetMapper<ModuleManual>.Scene
.Instantiate<ModuleManual>();
Manual.Init(this);
}
Board.ModuleManualLayer!.AddChild(Manual);
GlobalProvider.ProcessProvider.BuildManual(this);
Board.ModuleManualLayer!.AddChild(Manual.AsNode());
Manual.Position = Board.ModuleManualLayer.ManualPosition.Position - Manual.Size / 2;
Board.ManualOpened = true;
return;
@@ -150,7 +133,6 @@ public abstract partial class BaseModule : TextureRect, IBaseModule
base._Input(@event);
}
//public Texture2D PreviewTexture => GlobalProvider.TextureProvider.ModuleTextureMapper(this);
public abstract Texture2D PreviewTexture { get; }
}

View File

@@ -61,7 +61,7 @@ public abstract partial class V2Module : BinaryComputationalModule,
public void Inference()
{
OutputGroup!.SelectedType = GlobalProvider.DataTypeProvider!.BuildType(OutputGroup.SelectedType, 1, 2);
OutputGroup!.SelectedType = GlobalProvider.DataTypeProvider!.ToVector(OutputGroup.SelectedType);
}
}

View File

@@ -14,11 +14,11 @@ public abstract partial class KeyListenerModule : NullaryComputationalModule,
IKeyListenerModule,
IDuplicateOutputModule
{
[Export] private StringName? PresetActionName { get; set; }
private DataOutPort? Output1 { get; set; }
private DataOutPort? Output2 { get; set; }
private DataOutPort? Output3 { get; set; }
public IKeyParameter? ListeningKey { get; set; }
[Export] private StringName PresetActionName { get; set; }
private DataOutPort Output1 { get; set; }
private DataOutPort Output2 { get; set; }
private DataOutPort Output3 { get; set; }
public IKeyParameter ListeningKey { get; set; }
public bool Pressed { get; set; }
public HashSet<IConfigurableParameter> ConfigurableParameters { get; set; } = new();
public override void Init()

View File

@@ -65,4 +65,4 @@ public abstract partial class V2ComponentModule : UnaryComputationalModule, IPol
ScalarOutputGroup!.SelectedType = GlobalProvider.DataTypeProvider!
.GetBaseField(VectorInputGroup!.SelectedType);
}
}

View File

@@ -7,7 +7,7 @@ namespace Enigmos.Modules.ControllingModules;
public abstract partial class RootModule : BaseModule, IRootModule
{
public bool ActionFinished { get; set; }
public IBaseCreature? ManagedBy { get; set; }
public IBaseCreature ManagedBy { get; set; }
public void Start()
{
SignalOutPorts[0].Route();
@@ -15,7 +15,6 @@ public abstract partial class RootModule : BaseModule, IRootModule
protected override bool Draggable => false;
public ISignalOutPort[] SignalOutPorts { get; set; } = Array.Empty<ISignalOutPort>();
public Stopwatch? Timer { get; set; }
public bool Visited { get; set; }
public override void Init()

View File

@@ -1,5 +1,7 @@
using Enigmos.Boards;
using Enigmos.Modules.InterlayerModules;
using Nocturnis;
using Nocturnis.Enigmos.Boards;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.GlobalManagement.Providers;
@@ -8,8 +10,8 @@ namespace Enigmos.Modules.ProgrammableModules;
public abstract partial class ProgrammableModule : CompositeModule, IProgrammableModule
{
public BaseBoard? UnderlyingBoard { get; set; }
public void EnterProgrammableBoard() => GlobalProvider.SceneProvider!.RootScene.ChangeScene(UnderlyingBoard!);
public IBaseBoard UnderlyingBoard { get; set; }
public void EnterProgrammableBoard() => GlobalProvider.SceneProvider!.RootScene.ChangeScene(UnderlyingBoard.AsNode());
public abstract IEnumerable<IBasePort> ExplicitPorts { get; }
public abstract IEnumerable<IBasePort> ImplicitPorts { get; }
public override void UpdateCables()

View File

@@ -3,12 +3,12 @@ using Nocturnis.Enigmos.Modules;
namespace Enigmos.Modules.SubModules;
public class SubModule : BaseModule
public partial class SubModule : BaseModule
{
public ICompositeModule? ParentModule { get; set; }
public ICompositeModule ParentModule { get; set; }
public sealed override Vector2 PositionToBoard =>
base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
protected sealed override bool Draggable => false;
protected sealed override bool HasManual => false;
public override Texture2D? PreviewTexture => null;
public override Texture2D PreviewTexture => null;
}

View File

@@ -9,7 +9,11 @@ using Nocturnis.GlobalManagement.Providers;
namespace Enigmos.Modules.TerminalModules;
public abstract partial class MemoryModule : BaseModule, ITerminalModule, ISourceModule, IDuplicateOutputModule
public abstract partial class MemoryModule : BaseModule,
ITerminalModule,
ISourceModule,
IDuplicateOutputModule,
IPolymorphismModule
{
private DataVariable? Memory { get; set; }
private IDataPortGroup? MemoryPortGroup { get; set; }

View File

@@ -6,11 +6,11 @@ namespace Enigmos.Modules.TerminalModules.TestingModules;
public partial class R2Reader : Control
{
private AnimatedSprite2D? Direction { get; set; }
private AnimatedSprite2D? Magnitude { get; set; }
public R2? UnderlyingVector { get; set; }
private double TargetPhase() => Math.Atan2(UnderlyingVector![2], UnderlyingVector![1]);
private double TargetLength() => UnderlyingVector!.Magnitude;
private AnimatedSprite2D Direction { get; set; }
private AnimatedSprite2D Magnitude { get; set; }
public R2 UnderlyingVector { get; set; }
private double TargetPhase() => UnderlyingVector == null ? 0: Math.Atan2(UnderlyingVector![2], UnderlyingVector![1]);
private double TargetLength() => UnderlyingVector?.Magnitude ?? 0;
private int TargetPhaseFrame =>
Mathf.FloorToInt((TargetPhase() % (2d * Math.PI) + 2d * Math.PI) % (2d * Math.PI) * 44d / (2d * Math.PI));