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(); private static readonly PackedScene BoolParameterSetterScene = GlobalProvider.SceneProvider.AssetMapper(); private VBoxContainer Parameters { get; set; } public override void _Ready() { if (!InitFlag) throw new Exception("TODO - NEED INIT FIRST"); Parameters = GetNode("ScrolledItems/Parameters"); foreach (IConfigurableParameter parameter in Module.ConfigurableParameters) { if(parameter is IDoubleParameter doubleParameter) { ModuleRealValueParameterSetter setter = RealParameterSetterScene.Instantiate(); setter.Init(doubleParameter); Parameters.AddChild(setter); } else if (parameter is IBoolParameter boolParameter) { ModuleBoolValueParameterSetter setter = BoolParameterSetterScene.Instantiate(); setter.Init(boolParameter); Parameters.AddChild(setter); } else if (parameter is ICharParameter charParameter) { ModuleCharValueParameterSetter setter = GlobalProvider.SceneProvider .AssetMapper() .Instantiate(); setter.Init(charParameter); Parameters.AddChild(setter); } else if (parameter is IKeyParameter keyParameter) { ModuleKeyValueParameterSetter setter = GlobalProvider.SceneProvider .AssetMapper() .Instantiate(); setter.Init(keyParameter); Parameters.AddChild(setter); } } Name = "Para"; base._Ready(); } }