73 lines
2.2 KiB
C#
73 lines
2.2 KiB
C#
using Godot;
|
|
using Nocturnis.DataStructures.ConfigurableParameters;
|
|
using Nocturnis.Enigmos.ModuleManuals;
|
|
using Nocturnis.Enigmos.Modules;
|
|
using TabulaSmaragdina;
|
|
|
|
namespace Enigmos.Manual;
|
|
|
|
public partial class ModuleParameterTab : Panel, IModuleManualTab
|
|
{
|
|
public string FullName() => "Parameter";
|
|
private bool InitFlag { get; set; }
|
|
public void Init(IParameterizedModule module)
|
|
{
|
|
Module = module;
|
|
InitFlag = true;
|
|
}
|
|
|
|
public IParameterizedModule Module { get; set; }
|
|
|
|
private static readonly PackedScene RealParameterSetterScene =
|
|
GlobalProvider.SceneProvider.AssetMapper<ModuleRealValueParameterSetter>();
|
|
|
|
private static readonly PackedScene BoolParameterSetterScene =
|
|
GlobalProvider.SceneProvider.AssetMapper<ModuleBoolValueParameterSetter>();
|
|
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 =
|
|
RealParameterSetterScene.Instantiate<ModuleRealValueParameterSetter>();
|
|
setter.Init(doubleParameter);
|
|
Parameters.AddChild(setter);
|
|
}
|
|
|
|
else if (parameter is IBoolParameter boolParameter)
|
|
{
|
|
ModuleBoolValueParameterSetter setter =
|
|
BoolParameterSetterScene.Instantiate<ModuleBoolValueParameterSetter>();
|
|
setter.Init(boolParameter);
|
|
Parameters.AddChild(setter);
|
|
}
|
|
else if (parameter is ICharParameter charParameter)
|
|
{
|
|
ModuleCharValueParameterSetter setter =
|
|
GlobalProvider.SceneProvider
|
|
.AssetMapper<ModuleCharValueParameterSetter>()
|
|
.Instantiate<ModuleCharValueParameterSetter>();
|
|
setter.Init(charParameter);
|
|
Parameters.AddChild(setter);
|
|
}
|
|
else if (parameter is IKeyParameter keyParameter)
|
|
{
|
|
ModuleKeyValueParameterSetter setter =
|
|
GlobalProvider.SceneProvider
|
|
.AssetMapper<ModuleKeyValueParameterSetter>()
|
|
.Instantiate<ModuleKeyValueParameterSetter>();
|
|
setter.Init(keyParameter);
|
|
Parameters.AddChild(setter);
|
|
}
|
|
}
|
|
|
|
Name = "Para";
|
|
base._Ready();
|
|
}
|
|
|
|
} |