bracket system

This commit is contained in:
h z
2024-07-29 17:24:31 +01:00
parent f6a8f3e899
commit 097e3522a5
12 changed files with 40 additions and 34 deletions

View File

@@ -1,6 +1,7 @@
using Alchegos.DataStructure;
using Enigmos.Cables;
using Enigmos.Modules;
using Enigmos.Modules.ControllingModules;
using Enigmos.Modules.ProgrammableModules;
using Godot;
using Nocturnis.Enigmos.Boards;
@@ -51,14 +52,14 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
public bool ManualOpened { get; set; }
protected HashSet<IBaseModule> Modules { get; set; } = new();
protected IEnumerable<ProgrammableModule> ProgrammableModules() =>
protected IEnumerable<ProgrammableModule> ProgrammableModules =>
Modules
.OfType<ProgrammableModule>();
public IEnumerable<ITerminalModule> TerminalModules =>
Modules
.OfType<ITerminalModule>()
.Union(ProgrammableModules().SelectMany(module => module.UnderlyingBoard!.TerminalModules));
.Union(ProgrammableModules.SelectMany(module => module.UnderlyingBoard!.TerminalModules));
public IPanelViewer PanelViewer { get; set; }
public Dictionary<IBasePort, IBaseCable> CablePairing { get; set; } = new();
@@ -111,8 +112,9 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
pm.Board!.Reset();
foreach (IControllingModule cm in Modules.OfType<IControllingModule>())
cm.Visited = false;
foreach (ITerminalModule tm in Modules.OfType<ITerminalModule>())
tm.Finished = true;
/*
foreach (IBaseModule module in Modules)
{
@@ -141,10 +143,10 @@ public abstract partial class BaseBoard : Panel, IBaseBoard
controllingModule.Visited = false;
if (module is TerminalModule terminalModule)
terminalModule.Finished = false;
foreach (DataOutPort port in module.Ports.OfType<DataOutPort>())
port.DataUpdated = false;
}*/
}

View File

@@ -8,7 +8,7 @@ using Nocturnis.GlobalManagement.Controls;
namespace Enigmos.Boards;
public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard
public partial class PrimaryModuleBoard : BaseBoard, IPrimaryModuleBoard
{
private IBaseCreature ManagedBy { get; set; }
public IRootModule Root { get; set; }
@@ -27,11 +27,10 @@ public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard
public void Start()
{
if (!Root!.ActionFinished)
return;
//Root.Timer = Stopwatch.StartNew();
Engine!.Consume();
if (EnigmosControl.Instance.Energy < EnigmosConstant.IdlePower)
Engine.Consume();
if (EnigmosControl.Instance.Energy < EnigmosControl.Instance.IdlePower)
{
Root!.ActionFinished = true;
EnigmosControl.Instance.ShutDownEngine();
@@ -40,7 +39,13 @@ public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard
Root.Start();
foreach (ITerminalModule tm in TerminalModules)
tm.Consume();
}
public double IdlePower => Modules.Count * 0.05;
public override void Reset()
{
base.Reset();
Root.ActionFinished = true;
}
}