using Enigmos.Modules.ControllingModules; using Enigmos.Ports; using Enigmos.Ports.DataPorts; using Godot; using Skeleton.Utils.Helpers; using TabulaSmaragdina.Constants; namespace Enigmos.Modules.TerminalModules.TestingModules; public partial class RealReaderModule : TerminalModule { private DataInPort Input1 { get; set; } private DataInPort Input2 { get; set; } private DataInPort Input3 { get; set; } private AnimatedSprite2D RealReader { get; set; } public override IEnumerable Ports => new[] { Input1, Input2, Input3 }; public override void Init() { base.Init(); Input1 = GetPort("Input1"); Input2 = GetPort("Input2"); Input3 = GetPort("Input3"); Input1.SetDataType(EnigmosConstant.DataPortTypes.Real); Input2.SetDataType(EnigmosConstant.DataPortTypes.Real); Input3.SetDataType(EnigmosConstant.DataPortTypes.Real); RealReader = GetNode("RealReader"); RealReader.SpeedScale = 0; RealReader.Play(); PostInit(); } protected override void Consume(RootModule root) { double max = Input1.GetData(root).Real; double min = Input3.GetData(root).Real; double value = Input2.GetData(root).Real; //DebugToolWindow.FreeInfo = $"{value}"; 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; } }