Split project

This commit is contained in:
h z
2024-06-29 06:35:23 +08:00
parent b26404abd2
commit 117835b503
45 changed files with 1972 additions and 26 deletions

113
Manual/ModuleManual.cs Normal file
View File

@@ -0,0 +1,113 @@
using Enigmos.Modules.ProgrammableModules;
using Godot;
using Nocturnis.Enigmos.ModuleManuals;
using Nocturnis.Enigmos.Modules;
using TabulaSmaragdina;
namespace Enigmos.Manual;
public partial class ModuleManual : Panel
{
private bool InitFlag { get; set; }
public void Init(IBaseModule module)
{
Module = module;
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 List<IModuleManualTab> Tabs { get; set; }
private LineEdit LabelString { get; set; }
public override void _Ready()
{
if(!InitFlag)
throw new Exception("TODO - NEED INIT");
ModuleDescriptionTitle = GetNode<Label>("ModuleDescriptionTitle");
ModuleDescription = GetNode<RichTextLabel>("ModuleDescription");
ModuleConfigurationTitle = GetNode<Label>("ModuleConfigurationTitle");
Close = GetNode<TextureButton>("Close");
ConfigurationTabs = GetNode<TabContainer>("ConfigurationTabs");
ModuleDescription.Text = Module.GetDescription;
LabelString = GetNode<LineEdit>("LabelString");
LabelString.Text = Module.LabelString;
Tabs = new List<IModuleManualTab>();
PortMaintenanceTab mainTab = GlobalProvider.SceneProvider
.AssetMapper<PortMaintenanceTab>()
.Instantiate<PortMaintenanceTab>();
mainTab.Init(Module);
Tabs.Add(mainTab);
ConfigurationTabs.AddChild(mainTab);
if (Module is IPolymorphismModule polyModule)
{
ModulePolymorphismTab polyTab = GlobalProvider.SceneProvider
.AssetMapper<ModulePolymorphismTab>()
.Instantiate<ModulePolymorphismTab>();
polyTab.Init(polyModule);
Tabs.Add(polyTab);
ConfigurationTabs.AddChild(polyTab);
}
if (Module is IParameterizedModule paraModule)
{
ModuleParameterTab paraTab = GlobalProvider.SceneProvider
.AssetMapper<ModuleParameterTab>()
.Instantiate<ModuleParameterTab>();
paraTab.Init(paraModule);
Tabs.Add(paraTab);
ConfigurationTabs.AddChild(paraTab);
}
if (Module is ICommunicateModule comModule)
{
CommunicatorPairTab pairTab = GlobalProvider.SceneProvider
.AssetMapper<CommunicatorPairTab>()
.Instantiate<CommunicatorPairTab>();
pairTab.Init(comModule);
Tabs.Add(pairTab);
ConfigurationTabs.AddChild(pairTab);
}
if (Module is ProgrammableModule programmableModule)
{
ProgrammableModuleSettingTab progTab =GlobalProvider.SceneProvider
.AssetMapper<ProgrammableModuleSettingTab>()
.Instantiate<ProgrammableModuleSettingTab>();
progTab.Init(programmableModule);
Tabs.Add(progTab);
ConfigurationTabs.AddChild(progTab);
}
if (Module is IErrorHandlerModule errorHandlerModule)
{
ErrorHandlerTab errTab = GlobalProvider.SceneProvider
.AssetMapper<ErrorHandlerTab>()
.Instantiate<ErrorHandlerTab>();
errTab.Init(errorHandlerModule);
Tabs.Add(errTab);
ConfigurationTabs.AddChild(errTab);
}
base._Ready();
}
private void ShowTabTooltip(int idx) => ModuleConfigurationTitle.Text = Tabs[idx].FullName();
private void CloseManual()
{
GetParent().RemoveChild(this);
Module.Board.ManualOpened = false;
}
private void SetLabel(string label)
{
Module.Label.Text = label;
Module.LabelString = label;
}
}