bracket system
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
using Alchegos.DataStructure;
|
using Alchegos.DataStructure;
|
||||||
using Enigmos.Cables;
|
using Enigmos.Cables;
|
||||||
using Enigmos.Modules;
|
using Enigmos.Modules;
|
||||||
|
using Enigmos.Modules.ControllingModules;
|
||||||
using Enigmos.Modules.ProgrammableModules;
|
using Enigmos.Modules.ProgrammableModules;
|
||||||
using Godot;
|
using Godot;
|
||||||
using Nocturnis.Enigmos.Boards;
|
using Nocturnis.Enigmos.Boards;
|
||||||
@@ -51,14 +52,14 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
|
|||||||
public bool ManualOpened { get; set; }
|
public bool ManualOpened { get; set; }
|
||||||
protected HashSet<IBaseModule> Modules { get; set; } = new();
|
protected HashSet<IBaseModule> Modules { get; set; } = new();
|
||||||
|
|
||||||
protected IEnumerable<ProgrammableModule> ProgrammableModules() =>
|
protected IEnumerable<ProgrammableModule> ProgrammableModules =>
|
||||||
Modules
|
Modules
|
||||||
.OfType<ProgrammableModule>();
|
.OfType<ProgrammableModule>();
|
||||||
|
|
||||||
public IEnumerable<ITerminalModule> TerminalModules =>
|
public IEnumerable<ITerminalModule> TerminalModules =>
|
||||||
Modules
|
Modules
|
||||||
.OfType<ITerminalModule>()
|
.OfType<ITerminalModule>()
|
||||||
.Union(ProgrammableModules().SelectMany(module => module.UnderlyingBoard!.TerminalModules));
|
.Union(ProgrammableModules.SelectMany(module => module.UnderlyingBoard!.TerminalModules));
|
||||||
|
|
||||||
public IPanelViewer PanelViewer { get; set; }
|
public IPanelViewer PanelViewer { get; set; }
|
||||||
public Dictionary<IBasePort, IBaseCable> CablePairing { get; set; } = new();
|
public Dictionary<IBasePort, IBaseCable> CablePairing { get; set; } = new();
|
||||||
@@ -111,7 +112,8 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
|
|||||||
pm.Board!.Reset();
|
pm.Board!.Reset();
|
||||||
foreach (IControllingModule cm in Modules.OfType<IControllingModule>())
|
foreach (IControllingModule cm in Modules.OfType<IControllingModule>())
|
||||||
cm.Visited = false;
|
cm.Visited = false;
|
||||||
|
foreach (ITerminalModule tm in Modules.OfType<ITerminalModule>())
|
||||||
|
tm.Finished = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
foreach (IBaseModule module in Modules)
|
foreach (IBaseModule module in Modules)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ using Nocturnis.GlobalManagement.Controls;
|
|||||||
|
|
||||||
namespace Enigmos.Boards;
|
namespace Enigmos.Boards;
|
||||||
|
|
||||||
public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard
|
public partial class PrimaryModuleBoard : BaseBoard, IPrimaryModuleBoard
|
||||||
{
|
{
|
||||||
private IBaseCreature ManagedBy { get; set; }
|
private IBaseCreature ManagedBy { get; set; }
|
||||||
public IRootModule Root { get; set; }
|
public IRootModule Root { get; set; }
|
||||||
@@ -27,11 +27,10 @@ public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard
|
|||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
if (!Root!.ActionFinished)
|
|
||||||
return;
|
|
||||||
//Root.Timer = Stopwatch.StartNew();
|
//Root.Timer = Stopwatch.StartNew();
|
||||||
Engine!.Consume();
|
Engine.Consume();
|
||||||
if (EnigmosControl.Instance.Energy < EnigmosConstant.IdlePower)
|
if (EnigmosControl.Instance.Energy < EnigmosControl.Instance.IdlePower)
|
||||||
{
|
{
|
||||||
Root!.ActionFinished = true;
|
Root!.ActionFinished = true;
|
||||||
EnigmosControl.Instance.ShutDownEngine();
|
EnigmosControl.Instance.ShutDownEngine();
|
||||||
@@ -40,7 +39,13 @@ public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard
|
|||||||
Root.Start();
|
Root.Start();
|
||||||
foreach (ITerminalModule tm in TerminalModules)
|
foreach (ITerminalModule tm in TerminalModules)
|
||||||
tm.Consume();
|
tm.Consume();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double IdlePower => Modules.Count * 0.05;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
Root.ActionFinished = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,7 @@ public abstract partial class V2Module : BinaryComputationalModule,
|
|||||||
|
|
||||||
if (x.Type == DataTypeConstant.BaseDataTypes.Complex || y.Type == DataTypeConstant.BaseDataTypes.Complex)
|
if (x.Type == DataTypeConstant.BaseDataTypes.Complex || y.Type == DataTypeConstant.BaseDataTypes.Complex)
|
||||||
return (new C2(x.Complex, y.Complex), DataTypeConstant.BaseDataTypes.C2);
|
return (new C2(x.Complex, y.Complex), DataTypeConstant.BaseDataTypes.C2);
|
||||||
return (new R2(x.Real, y.Real), DataTypeConstant.BaseDataTypes.Real);
|
return (new R2(x.Real, y.Real), DataTypeConstant.BaseDataTypes.R2);
|
||||||
}
|
}
|
||||||
this.Define(Func);
|
this.Define(Func);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ public abstract partial class MoveActionModule : ActionModule, ITerminalModule
|
|||||||
|
|
||||||
public override void Act()
|
public override void Act()
|
||||||
{
|
{
|
||||||
CreatureControl.Instance.CurrentCharacter!.Action.Attack(DataInPorts[0].GetData.Get!.R2);
|
if (!DataInPorts[0].Connected)
|
||||||
|
return;
|
||||||
|
CreatureControl.Instance.CurrentCharacter!.Action.Move(DataInPorts[0].GetData.Get!.R2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public abstract partial class EngineModule : TerminalModule, IEngineModule
|
|||||||
public override void Drain()
|
public override void Drain()
|
||||||
{
|
{
|
||||||
base.Drain();
|
base.Drain();
|
||||||
if (FuelTank!.Item!.ContentMaterial.Layers.Count == 0)
|
if (FuelTank.Item == null || FuelTank.Item.ContentMaterial.Layers.Count == 0)
|
||||||
{
|
{
|
||||||
EnigmosControl.Instance.Energy = 0;
|
EnigmosControl.Instance.Energy = 0;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ public abstract partial class SRLatchModule : BaseModule,
|
|||||||
IDuplicateOutputModule,
|
IDuplicateOutputModule,
|
||||||
IOperationModule
|
IOperationModule
|
||||||
{
|
{
|
||||||
public IDataOutPort[] DataOutPorts { get; set; } = Array.Empty<IDataOutPort>();
|
public IDataOutPort[] DataOutPorts { get; set; }
|
||||||
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
public IDataInPort[] DataInPorts { get; set; }
|
||||||
|
|
||||||
private bool State { get; set; }
|
private bool State { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -3,18 +3,15 @@ using Godot;
|
|||||||
using Nocturnis.Enigmos.Modules;
|
using Nocturnis.Enigmos.Modules;
|
||||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||||
using Nocturnis.GlobalManagement.Constants;
|
using Nocturnis.GlobalManagement.Constants;
|
||||||
|
using Nocturnis.GlobalManagement.Providers;
|
||||||
|
|
||||||
namespace Enigmos.Modules.TerminalModules.TestingModules;
|
namespace Enigmos.Modules.TerminalModules.TestingModules;
|
||||||
|
|
||||||
public abstract partial class LightEmittingDiodeModule : TerminalModule
|
public abstract partial class LightEmittingDiodeModule : TerminalModule
|
||||||
{
|
{
|
||||||
private Sprite2D? LightEmittingDiode { get; set; }
|
private Sprite2D LightEmittingDiode { get; set; }
|
||||||
private IDataInPort? Input { get; set; }
|
private IDataInPort Input { get; set; }
|
||||||
|
|
||||||
private static readonly Texture2D TrueTexture =
|
|
||||||
ResourceLoader.Load<Texture2D>("res://Resources/Circuits/Modules/Terminal/Testing/LEDBubble-T.png");
|
|
||||||
private static readonly Texture2D FalseTexture =
|
|
||||||
ResourceLoader.Load<Texture2D>("res://Resources/Circuits/Modules/Terminal/Testing/LEDBubble-F.png");
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
{
|
{
|
||||||
base.Init();
|
base.Init();
|
||||||
@@ -27,10 +24,10 @@ public abstract partial class LightEmittingDiodeModule : TerminalModule
|
|||||||
|
|
||||||
public override void Drain()
|
public override void Drain()
|
||||||
{
|
{
|
||||||
if (Input!.GetData.Get!.Bit)
|
if (Input.GetData.Get.Bit)
|
||||||
LightEmittingDiode!.Texture = TrueTexture;
|
LightEmittingDiode.Texture = GlobalProvider.TextureProvider.LEDOn;
|
||||||
else
|
else
|
||||||
LightEmittingDiode!.Texture = FalseTexture;
|
LightEmittingDiode.Texture = GlobalProvider.TextureProvider.LEDOff;
|
||||||
Finished = true;
|
Finished = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@ namespace Enigmos.Modules.TerminalModules.TestingModules;
|
|||||||
|
|
||||||
public abstract partial class RealReaderModule : BaseModule, ITerminalModule, IOperationModule
|
public abstract partial class RealReaderModule : BaseModule, ITerminalModule, IOperationModule
|
||||||
{
|
{
|
||||||
private AnimatedSprite2D? RealReader { get; set; }
|
private AnimatedSprite2D RealReader { get; set; }
|
||||||
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
||||||
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
@@ -29,7 +29,7 @@ public abstract partial class RealReaderModule : BaseModule, ITerminalModule, IO
|
|||||||
double min = DataInPorts[2].GetData.Get!.Real;
|
double min = DataInPorts[2].GetData.Get!.Real;
|
||||||
double value = DataInPorts[1].GetData.Get!.Real;
|
double value = DataInPorts[1].GetData.Get!.Real;
|
||||||
double range = max - min;
|
double range = max - min;
|
||||||
double percentage = (range == 0 ? 0d : value / range).DoubleCut();
|
double percentage = (range == 0 ? 0d : (value - min) / range).DoubleCut();
|
||||||
int frame = Mathf.FloorToInt(percentage * 122);
|
int frame = Mathf.FloorToInt(percentage * 122);
|
||||||
RealReader!.SpeedScale = (frame - RealReader.Frame) / 60f;
|
RealReader!.SpeedScale = (frame - RealReader.Frame) / 60f;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public partial class DataInPort : DataPort, IDataInPort
|
|||||||
other is DataOutPort dataOut &&
|
other is DataOutPort dataOut &&
|
||||||
GlobalProvider.DataTypeProvider!.DataPortTypeCompatible(DataType!, dataOut.DataType!);
|
GlobalProvider.DataTypeProvider!.DataPortTypeCompatible(DataType!, dataOut.DataType!);
|
||||||
|
|
||||||
public DataCache GetData => Connected ? ConnectedPort!.OutData : DataCache.Null;
|
public DataCache GetData => Connected ? ConnectedPort!.OutData : DefaultDataCache.Default;
|
||||||
|
|
||||||
/*public IDataPackage GetData(IRootModule root)
|
/*public IDataPackage GetData(IRootModule root)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ public partial class SignalInPort : SignalPort, ISignalInPort
|
|||||||
{
|
{
|
||||||
public new IControllingModule Module
|
public new IControllingModule Module
|
||||||
{
|
{
|
||||||
get => (base.Module as PiplineModule)!;
|
get => (base.Module as IControllingModule)!;
|
||||||
set => base.Module = value;
|
set => base.Module = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public new ISignalOutPort? ConnectedPort
|
public new ISignalOutPort ConnectedPort
|
||||||
{
|
{
|
||||||
get => base.ConnectedPort as ISignalOutPort;
|
get => base.ConnectedPort as ISignalOutPort;
|
||||||
set => base.ConnectedPort = value;
|
set => base.ConnectedPort = value;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public partial class SignalOutPort : SignalPort, ISignalOutPort
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public new ISignalInPort? ConnectedPort
|
public new ISignalInPort ConnectedPort
|
||||||
{
|
{
|
||||||
get => base.ConnectedPort as ISignalInPort;
|
get => base.ConnectedPort as ISignalInPort;
|
||||||
set => base.ConnectedPort = value;
|
set => base.ConnectedPort = value;
|
||||||
@@ -38,7 +38,7 @@ public partial class SignalOutPort : SignalPort, ISignalOutPort
|
|||||||
CreatureControl.Instance.CurrentCharacter!.MotherBoard.Root.ActionFinished = true;
|
CreatureControl.Instance.CurrentCharacter!.MotherBoard.Root.ActionFinished = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConnectedPort!.Module.Visit();
|
ConnectedPort.Module.Visit();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user