From 1df3c08a9e6213049d04dafef51cf98b8c5c09e3 Mon Sep 17 00:00:00 2001 From: hzhang Date: Fri, 12 Jul 2024 14:32:16 +0100 Subject: [PATCH] Upgrade --- Boards/BaseBoard.cs | 33 ++++++----- Boards/FilterModuleBoard.cs | 13 ++-- Enigmos.csproj | 8 ++- Manual/ModuleManual.cs | 59 ++++++++----------- Manual/ModuleParameterSetter.cs | 2 +- Manual/ModuleParameterTab.cs | 26 +++----- Manual/PortTypeSelector.cs | 15 ++--- Manual/ProgrammableModuleSettingTab.cs | 9 +-- Modules/BaseModule.cs | 40 ++++--------- .../ComputationalModules/Binary/V2Module.cs | 2 +- .../Nullary/KeyListenerModule.cs | 10 ++-- .../Unary/V2ComponentModule.cs | 2 +- Modules/ControllingModules/RootModule.cs | 3 +- .../ProgrammableModules/ProgrammableModule.cs | 6 +- Modules/SubModules/SubModule.cs | 6 +- Modules/TerminalModules/MemoryModule.cs | 6 +- .../TestingModules/R2Reader.cs | 10 ++-- Ports/BasePort.cs | 8 ++- Ports/DataPorts/DataOutPort.cs | 4 +- Ports/SignalPorts/SignalOutPort.cs | 5 +- 20 files changed, 119 insertions(+), 148 deletions(-) diff --git a/Boards/BaseBoard.cs b/Boards/BaseBoard.cs index 5961874..258d628 100644 --- a/Boards/BaseBoard.cs +++ b/Boards/BaseBoard.cs @@ -1,3 +1,4 @@ +using Alchegos.DataStructure; using Enigmos.Cables; using Enigmos.Modules; using Enigmos.Modules.ProgrammableModules; @@ -47,7 +48,7 @@ public abstract partial class BaseBoard : Panel, IBaseBoard cable.Modulate = Color.Color8(255, 255, 255, (Byte)(CableVisualMode ? 20 : 255)); } - public IModuleManualLayer? ModuleManualLayer { get; set; } + public IModuleManualLayer ModuleManualLayer { get; set; } public bool ManualOpened { get; set; } protected HashSet Modules { get; set; } = new(); @@ -59,9 +60,8 @@ public abstract partial class BaseBoard : Panel, IBaseBoard Modules .OfType() .Union(ProgrammableModules().SelectMany(module => module.UnderlyingBoard!.TerminalModules)); - - protected HashSet Ports => Modules.SelectMany(module => module.Ports).ToHashSet(); - public IPanelViewer? PanelViewer { get; set; } + + public IPanelViewer PanelViewer { get; set; } public Dictionary CablePairing { get; set; } = new(); public IEnumerable OnBoardPorts @@ -74,9 +74,9 @@ public abstract partial class BaseBoard : Panel, IBaseBoard return res; } } - public IBasePort? ConnectPending { get; set; } - public IBoardControlLayer? CircuitBoardControlLayer { get; set; } - public IModuleMovingLayer? ModuleMovingLayer { get; set; } + public IBasePort ConnectPending { get; set; } + public IBoardControlLayer CircuitBoardControlLayer { get; set; } + public IModuleMovingLayer ModuleMovingLayer { get; set; } public virtual void Init() { @@ -84,17 +84,18 @@ public abstract partial class BaseBoard : Panel, IBaseBoard Modules = new HashSet(); FocusedCables = new HashSet(); ConnectPending = null; - } - - public override void _Ready() - { - base._Ready(); + ModuleManualLayer = GetNode("ModuleManualLayer"); ModuleMovingLayer = GetNode("ModuleMovingLayer"); ModuleMovingLayer.Board = this; PanelViewer = GetNode("PanelViewer"); CircuitBoardControlLayer = GetNode("CircuitBoardControlLayer"); CircuitBoardControlLayer.Board = this; + } + + public override void _Ready() + { + base._Ready(); } @@ -156,12 +157,12 @@ public abstract partial class BaseBoard : Panel, IBaseBoard public override bool _CanDropData(Vector2 atPosition, Variant data) { - IVariantWithType vData = data.As(); + VariantWithType vData = data.As(); if (vData.TypeHint != "Module") { if(vData.TypeHint != "Item") return false; - IBaseItem item = vData.UnderlyingData.As(); + IBaseItem item = vData.UnderlyingData.As() as IBaseItem; if (item is IBaseModuleItem moduleItem) { foreach (IBaseModule module in Modules) @@ -187,7 +188,7 @@ public abstract partial class BaseBoard : Panel, IBaseBoard } public override void _DropData(Vector2 atPosition, Variant data) { - IVariantWithType vData = data.As(); + VariantWithType vData = data.As(); if(vData.TypeHint == "Module") { BaseModule vModule = vData.UnderlyingData.As(); @@ -196,7 +197,7 @@ public abstract partial class BaseBoard : Panel, IBaseBoard } else { - IBaseModuleItem moduleItem = vData.UnderlyingData.As(); + IBaseModuleItem moduleItem = vData.UnderlyingData.As() as IBaseModuleItem; AddModule(moduleItem.ContentModule, atPosition); ItemDraggingControl.Instance.DraggingFrom!.Item = null; } diff --git a/Boards/FilterModuleBoard.cs b/Boards/FilterModuleBoard.cs index 86b5bad..93cf528 100644 --- a/Boards/FilterModuleBoard.cs +++ b/Boards/FilterModuleBoard.cs @@ -7,17 +7,13 @@ using Nocturnis.GlobalManagement.Constants; namespace Enigmos.Boards; public partial class FilterModuleBoard : BaseBoard, ISceneConcept { - public FilterModule? FilterModule { get; set; } + public FilterModule FilterModule { get; set; } - public FilterInputProviderModule? InputProvider { get; set; } + public FilterInputProviderModule InputProvider { get; set; } public IInterlayerDataOutModule[] FilterInputProxy { get; set; } = Array.Empty(); - //public IInterlayerDataOutModule[] Outputs { get; set; } = Array.Empty(); - - //public XIterativeOutputModule? IterativeOutput { get; set; } - //public IDataInPort? Indicate { get; set; } - //public IndicateInputModule? Indicate { get; set; } - public FilterIndicateModule? Indicate { get; set; } + + public FilterIndicateModule Indicate { get; set; } public void Init(FilterModule filterModule) { @@ -29,7 +25,6 @@ public partial class FilterModuleBoard : BaseBoard, ISceneConcept for (int i = 1; i <= 3; i++) FilterInputProxy[i - 1] = GetModule($"IO{i}"); base.Init(); - //IterativeOutput = GetModule("IterativeOutput"); Indicate = GetModule("Indicate"); Indicate.Indicate!.SetDataType(DataTypeConstant.BaseDataTypes.Bit); } diff --git a/Enigmos.csproj b/Enigmos.csproj index 70c89ae..f2c3070 100644 --- a/Enigmos.csproj +++ b/Enigmos.csproj @@ -1,13 +1,15 @@ - - + + net6.0 enable disable + false + false - + diff --git a/Manual/ModuleManual.cs b/Manual/ModuleManual.cs index f187b3b..d5bf4b8 100644 --- a/Manual/ModuleManual.cs +++ b/Manual/ModuleManual.cs @@ -7,7 +7,7 @@ using Nocturnis.GlobalManagement.Providers; namespace Enigmos.Manual; -public abstract partial class ModuleManual : Panel, ISceneConcept +public abstract partial class ModuleManual : Panel, ISceneConcept, IModuleManual { private bool InitFlag { get; set; } @@ -17,14 +17,14 @@ public abstract partial class ModuleManual : Panel, ISceneConcept InitFlag = true; } - private Label? ModuleDescriptionTitle { get; set; } - private RichTextLabel? ModuleDescription { get; set; } - private Label? ModuleConfigurationTitle { get; set; } - private TextureButton? Close { get; set; } - private TabContainer? ConfigurationTabs { get; set; } - private IBaseModule? Module { get; set; } + private Label ModuleDescriptionTitle { get; set; } + private RichTextLabel ModuleDescription { get; set; } + private Label ModuleConfigurationTitle { get; set; } + private TextureButton Close { get; set; } + private TabContainer ConfigurationTabs { get; set; } + private IBaseModule Module { get; set; } private List Tabs { get; set; } = new(); - private LineEdit? LabelString { get; set; } + private LineEdit LabelString { get; set; } public override void _Ready() { if(!InitFlag) @@ -38,58 +38,47 @@ public abstract partial class ModuleManual : Panel, ISceneConcept LabelString = GetNode("LabelString"); LabelString.Text = Module.LabelString; Tabs = new List(); - PortMaintenanceTab mainTab = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - mainTab.Init(Module); + + PortMaintenanceTab mainTab = + GlobalProvider.ProcessProvider.BuildPortMaintenanceTab(Module) as PortMaintenanceTab; Tabs.Add(mainTab); ConfigurationTabs.AddChild(mainTab); if (Module is IPolymorphismModule polyModule) { - ModulePolymorphismTab polyTab = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - polyTab.Init(polyModule); + ModulePolymorphismTab polyTab = + GlobalProvider.ProcessProvider.BuildModulePolymorphismTab(polyModule) as ModulePolymorphismTab; Tabs.Add(polyTab); ConfigurationTabs.AddChild(polyTab); } - if (Module is IParameterizedModule paraModule) { - ModuleParameterTab paraTab = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - paraTab.Init(paraModule); + + ModuleParameterTab paraTab = + GlobalProvider.ProcessProvider.BuildModuleParameterTab(paraModule) as ModuleParameterTab; Tabs.Add(paraTab); ConfigurationTabs.AddChild(paraTab); } if (Module is ICommunicateModule comModule) { - CommunicatorPairTab pairTab = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - pairTab.Init(comModule); + + CommunicatorPairTab pairTab = + GlobalProvider.ProcessProvider.BuildCommunicatorPairTab(comModule) as CommunicatorPairTab; Tabs.Add(pairTab); ConfigurationTabs.AddChild(pairTab); } - if (Module is ProgrammableModule programmableModule) + if (Module is IProgrammableModule progModule) { - ProgrammableModuleSettingTab progTab =GlobalProvider - .AssetMapper.Scene - .Instantiate(); - progTab.Init(programmableModule); + ProgrammableModuleSettingTab progTab = + GlobalProvider.ProcessProvider.BuildProgrammableModuleSettingTab(progModule) as ProgrammableModuleSettingTab; Tabs.Add(progTab); ConfigurationTabs.AddChild(progTab); } - if (Module is IErrorHandlerModule errorHandlerModule) + if (Module is IErrorHandlerModule errModule) { - ErrorHandlerTab errTab = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - errTab.Init(errorHandlerModule); + ErrorHandlerTab errTab = GlobalProvider.ProcessProvider.BuildErrorHandlerTab(errModule) as ErrorHandlerTab; Tabs.Add(errTab); ConfigurationTabs.AddChild(errTab); } diff --git a/Manual/ModuleParameterSetter.cs b/Manual/ModuleParameterSetter.cs index b2d0c5e..8808fa3 100644 --- a/Manual/ModuleParameterSetter.cs +++ b/Manual/ModuleParameterSetter.cs @@ -3,7 +3,7 @@ using Nocturnis.DataStructures.ConfigurableParameters; namespace Enigmos.Manual; -public abstract partial class ModuleParameterSetter : Control +public abstract partial class ModuleParameterSetter : Control, IModuleParameterSetter { protected bool InitFlag { get; set; } public IConfigurableParameter UnderlyingParameter { get; set; } diff --git a/Manual/ModuleParameterTab.cs b/Manual/ModuleParameterTab.cs index c233697..bb7b2d0 100644 --- a/Manual/ModuleParameterTab.cs +++ b/Manual/ModuleParameterTab.cs @@ -30,37 +30,27 @@ public partial class ModuleParameterTab : Panel, IModuleManualTab, ISceneConcept { if(parameter is IDoubleParameter doubleParameter) { - ModuleRealValueParameterSetter setter = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - setter.Init(doubleParameter); + ModuleRealValueParameterSetter setter = GlobalProvider.ProcessProvider + .BuildModuleRealValueParameterSetter(doubleParameter) as ModuleRealValueParameterSetter; Parameters.AddChild(setter); } else if (parameter is IBoolParameter boolParameter) { - ModuleBoolValueParameterSetter setter = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - setter.Init(boolParameter); + ModuleBoolValueParameterSetter setter = GlobalProvider.ProcessProvider + .BuildModuleBoolValueParameterSetter(boolParameter) as ModuleBoolValueParameterSetter; Parameters.AddChild(setter); } else if (parameter is ICharParameter charParameter) { - ModuleCharValueParameterSetter setter = - GlobalProvider - .AssetMapper.Scene - .Instantiate(); - setter.Init(charParameter); + ModuleCharValueParameterSetter setter = GlobalProvider.ProcessProvider + .BuildModuleCharValueParameterSetter(charParameter) as ModuleCharValueParameterSetter; Parameters.AddChild(setter); } else if (parameter is IKeyParameter keyParameter) { - ModuleKeyValueParameterSetter setter = - GlobalProvider - .AssetMapper.Scene - .Instantiate(); - setter.Init(keyParameter); + ModuleKeyValueParameterSetter setter = GlobalProvider.ProcessProvider + .BuildModuleKeyValueParameterSetter(keyParameter) as ModuleKeyValueParameterSetter; Parameters.AddChild(setter); } } diff --git a/Manual/PortTypeSelector.cs b/Manual/PortTypeSelector.cs index 0d8661a..8eb1b7f 100644 --- a/Manual/PortTypeSelector.cs +++ b/Manual/PortTypeSelector.cs @@ -1,6 +1,7 @@ using Godot; using Nocturnis; using Nocturnis.DataStructures.DataPortGroups; +using Nocturnis.DataStructures.DataTypes; using Nocturnis.GlobalManagement.Providers; namespace Enigmos.Manual; @@ -18,20 +19,20 @@ public partial class PortTypeSelector : Control, ISceneConcept /// /// Underlying Group must be set before _Ready /// - public IDataPortGroup? UnderlyingGroup { get; set; } - private Label? Description { get; set; } - private OptionButton? TypeOptions { get; set; } + public IDataPortGroup UnderlyingGroup { get; set; } + private Label Description { get; set; } + private OptionButton TypeOptions { get; set; } public override void _Ready() { if (!InitFlag) throw new Exception("TODO - NEED INIT"); Description = GetNode