Upgrade structure of code base
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using TabulaSmaragdina.Constants;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
|
||||
namespace Enigmos.Modules.TerminalModules.TestingModules;
|
||||
|
||||
public partial class LightEmittingDiodeModule : TerminalModule
|
||||
{
|
||||
private Sprite2D LightEmittingDiode { get; set; }
|
||||
private DataInPort Input { get; set; }
|
||||
public override IEnumerable<IBasePort> Ports => new[] { Input };
|
||||
private Sprite2D? LightEmittingDiode { get; set; }
|
||||
private IDataInPort? Input { get; set; }
|
||||
public override IEnumerable<IBasePort> Ports => new[] { Input! };
|
||||
|
||||
private static readonly Texture2D TrueTexture =
|
||||
ResourceLoader.Load<Texture2D>("res://Resources/Circuits/Modules/Terminal/Testing/LEDBubble-T.png");
|
||||
@@ -22,17 +23,17 @@ public partial class LightEmittingDiodeModule : TerminalModule
|
||||
base.Init();
|
||||
Finished = true;
|
||||
LightEmittingDiode = GetNode<Sprite2D>("LightEmittingDiode");
|
||||
Input = GetPort<DataInPort>("Input");
|
||||
Input = this.GetPort<DataInPort>("Input");
|
||||
Input.SetDataType(EnigmosConstant.DataPortTypes.Bit);
|
||||
PostInit();
|
||||
}
|
||||
|
||||
protected override void Consume(RootModule root)
|
||||
public override void Drain()
|
||||
{
|
||||
if (Input.GetData(root).Bit)
|
||||
LightEmittingDiode.Texture = TrueTexture;
|
||||
if (Input!.GetData.Get!.Bit)
|
||||
LightEmittingDiode!.Texture = TrueTexture;
|
||||
else
|
||||
LightEmittingDiode.Texture = FalseTexture;
|
||||
LightEmittingDiode!.Texture = FalseTexture;
|
||||
Finished = true;
|
||||
}
|
||||
}
|
||||
@@ -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() => Math.Atan2(UnderlyingVector![2], UnderlyingVector![1]);
|
||||
private double TargetLength() => UnderlyingVector!.Magnitude;
|
||||
|
||||
private int TargetPhaseFrame =>
|
||||
Mathf.FloorToInt((TargetPhase() % (2d * Math.PI) + 2d * Math.PI) % (2d * Math.PI) * 44d / (2d * Math.PI));
|
||||
@@ -19,8 +19,8 @@ public partial class R2Reader : Control
|
||||
Mathf.FloorToInt(TargetLength().DoubleCut() * 9d);
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
Magnitude.SpeedScale = (TargetLengthFrame - Magnitude.Frame) / 7f;
|
||||
var debug = new[] { TargetPhaseFrame - Direction.Frame, TargetPhaseFrame + 44 - Direction.Frame };
|
||||
Magnitude!.SpeedScale = (TargetLengthFrame - Magnitude.Frame) / 7f;
|
||||
var debug = new[] { TargetPhaseFrame - Direction!.Frame, TargetPhaseFrame + 44 - Direction.Frame };
|
||||
Direction.SpeedScale = debug.MinBy(Math.Abs) / 25f;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,29 +1,30 @@
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using TabulaSmaragdina.Constants;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
|
||||
namespace Enigmos.Modules.TerminalModules.TestingModules;
|
||||
|
||||
public partial class R2ReaderModule : TerminalModule
|
||||
{
|
||||
private DataInPort DataIn { get; set; }
|
||||
private R2Reader R2Reader { get; set; }
|
||||
private DataInPort? DataIn { get; set; }
|
||||
private R2Reader? R2Reader { get; set; }
|
||||
|
||||
public override IEnumerable<BasePort> Ports => new[] { DataIn };
|
||||
public override IEnumerable<BasePort> Ports => new[] { DataIn! };
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
DataIn = GetPort<DataInPort>("DataIn");
|
||||
DataIn = this.GetPort<DataInPort>("DataIn");
|
||||
DataIn.SetDataType(EnigmosConstant.DataPortTypes.R2);
|
||||
R2Reader = GetNode<R2Reader>("R2Reader");
|
||||
R2Reader.Init();
|
||||
PostInit();
|
||||
}
|
||||
|
||||
protected override void Consume(RootModule root)
|
||||
public override void Drain()
|
||||
{
|
||||
R2Reader.UnderlyingVector = DataIn.GetData(root).R2;
|
||||
R2Reader!.UnderlyingVector = DataIn!.GetData.Get!.R2;
|
||||
}
|
||||
}
|
||||
@@ -1,45 +1,38 @@
|
||||
using Enigmos.Modules.ControllingModules;
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
using Skeleton.Utils.Helpers;
|
||||
using TabulaSmaragdina.Constants;
|
||||
|
||||
namespace Enigmos.Modules.TerminalModules.TestingModules;
|
||||
|
||||
public partial class RealReaderModule : TerminalModule
|
||||
public partial class RealReaderModule : BaseModule, ITerminalModule, IOperationModule
|
||||
{
|
||||
private DataInPort Input1 { get; set; }
|
||||
private DataInPort Input2 { get; set; }
|
||||
private DataInPort Input3 { get; set; }
|
||||
private AnimatedSprite2D RealReader { get; set; }
|
||||
public override IEnumerable<BasePort> Ports => new[] { Input1, Input2, Input3 };
|
||||
private AnimatedSprite2D? RealReader { get; set; }
|
||||
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
||||
public override IEnumerable<IBasePort> Ports => DataInPorts;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
Input1 = GetPort<DataInPort>("Input1");
|
||||
Input2 = GetPort<DataInPort>("Input2");
|
||||
Input3 = GetPort<DataInPort>("Input3");
|
||||
Input1.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
Input2.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
Input3.SetDataType(EnigmosConstant.DataPortTypes.Real);
|
||||
this.DataInInit("Input", 3);
|
||||
this.SetInputType(EnigmosConstant.DataPortTypes.Real);
|
||||
RealReader = GetNode<AnimatedSprite2D>("RealReader");
|
||||
RealReader.SpeedScale = 0;
|
||||
RealReader.Play();
|
||||
PostInit();
|
||||
}
|
||||
|
||||
protected override void Consume(RootModule root)
|
||||
public void Drain()
|
||||
{
|
||||
double max = Input1.GetData(root).Real;
|
||||
double min = Input3.GetData(root).Real;
|
||||
double value = Input2.GetData(root).Real;
|
||||
//DebugToolWindow.FreeInfo = $"{value}";
|
||||
double max = DataInPorts[0].GetData.Get!.Double;
|
||||
double min = DataInPorts[2].GetData.Get!.Double;
|
||||
double value = DataInPorts[1].GetData.Get!.Double;
|
||||
double range = max - min;
|
||||
double percentage = (range == 0 ? 0d : value / range).DoubleCut();
|
||||
int frame = Mathf.FloorToInt(percentage * 122);
|
||||
RealReader.SpeedScale = (frame - RealReader.Frame) / 60f;
|
||||
Finished = true;
|
||||
RealReader!.SpeedScale = (frame - RealReader.Frame) / 60f;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user