113 lines
3.3 KiB
C#
113 lines
3.3 KiB
C#
using Enigmos.Modules.ProgrammableModules;
|
|
using Godot;
|
|
using Nocturnis.Enigmos.ModuleManuals;
|
|
using Nocturnis.Enigmos.Modules;
|
|
using Nocturnis.GlobalManagement.Providers;
|
|
|
|
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;
|
|
}
|
|
} |