Files
Enigmos/Manual/ModuleParameterTab.cs
2024-07-10 07:02:11 +01:00

72 lines
2.0 KiB
C#

using Godot;
using Nocturnis;
using Nocturnis.DataStructures.ConfigurableParameters;
using Nocturnis.Enigmos.ModuleManuals;
using Nocturnis.Enigmos.Modules;
using Nocturnis.GlobalManagement.Providers;
namespace Enigmos.Manual;
public partial class ModuleParameterTab : Panel, IModuleManualTab, ISceneConcept
{
public string FullName() => "Parameter";
private bool InitFlag { get; set; }
public void Init(IParameterizedModule module)
{
Module = module;
InitFlag = true;
}
public IParameterizedModule Module { get; set; }
private VBoxContainer Parameters { get; set; }
public override void _Ready()
{
if (!InitFlag)
throw new Exception("TODO - NEED INIT FIRST");
Parameters = GetNode<VBoxContainer>("ScrolledItems/Parameters");
foreach (IConfigurableParameter parameter in Module.ConfigurableParameters)
{
if(parameter is IDoubleParameter doubleParameter)
{
ModuleRealValueParameterSetter setter = GlobalProvider
.AssetMapper<ModuleRealValueParameterSetter>.Scene
.Instantiate<ModuleRealValueParameterSetter>();
setter.Init(doubleParameter);
Parameters.AddChild(setter);
}
else if (parameter is IBoolParameter boolParameter)
{
ModuleBoolValueParameterSetter setter = GlobalProvider
.AssetMapper<ModuleBoolValueParameterSetter>.Scene
.Instantiate<ModuleBoolValueParameterSetter>();
setter.Init(boolParameter);
Parameters.AddChild(setter);
}
else if (parameter is ICharParameter charParameter)
{
ModuleCharValueParameterSetter setter =
GlobalProvider
.AssetMapper<ModuleCharValueParameterSetter>.Scene
.Instantiate<ModuleCharValueParameterSetter>();
setter.Init(charParameter);
Parameters.AddChild(setter);
}
else if (parameter is IKeyParameter keyParameter)
{
ModuleKeyValueParameterSetter setter =
GlobalProvider
.AssetMapper<ModuleKeyValueParameterSetter>.Scene
.Instantiate<ModuleKeyValueParameterSetter>();
setter.Init(keyParameter);
Parameters.AddChild(setter);
}
}
Name = "Para";
base._Ready();
}
}