Files
Enigmos/Manual/ModuleParameterTab.cs
2024-07-03 12:20:08 +08:00

73 lines
2.2 KiB
C#

using Godot;
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
{
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();
}
}