using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Ichni.RhythmGame; using TMPro; using UnityEngine; using UnityEngine.Events; namespace Ichni.Editor { public class DynamicUIEnumDropdown : DynamicUIElement { public TMP_Dropdown dropdown; public List realValues; public override void Initialize(IBaseElement baseElement, string title, string parameterName) { base.Initialize(baseElement, title, parameterName); object value = ReflectionHelper.GetDeepValue(connectedBaseElement, parameterName); dropdown.value = value != null ? (int)value : 0; dropdown.onValueChanged.AddListener(ApplyParameters); } public void SetUpEnum(Type enumType) { dropdown.ClearOptions(); List enumNameList = System.Enum.GetNames(enumType).ToList(); realValues = System.Enum.GetValues(enumType).Cast().ToList(); dropdown.AddOptions(enumNameList); } private void ApplyParameters(int value) { ReflectionHelper.SetDeepValue(connectedBaseElement, parameterName, realValues[value]); connectedBaseElement.Refresh(); } public override DynamicUIElement AddListenerFunction(UnityAction action) { dropdown.onValueChanged.AddListener(_ => action()); return this; } } }