예제 #1
0
        public static void AddButtonToggleListItem(this ICustomLayoutedMenu list, string description, string submenu_name, Action on_button, Action <bool> set_value, Func <bool> get_value, bool update)
        {
            var obj = list.AddCustomButton(ButtonToggleItem);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure button */
                var button = obj.transform.GetChild(1);
                button.GetComponentInChildren <TMP_Text>().text = submenu_name;
                button.GetComponent <Button>().onClick.AddListener(on_button);

                /* Configure toggle */
                var toggle = obj.transform.GetChild(2).GetComponent <Toggle>();
                toggle.isOn = get_value();
                toggle.onValueChanged.AddListener(set_value);

                /* Configure updater */
                if (update)
                {
                    var updater = obj.AddComponent <Updater>();
                    updater.callback = () => { toggle.SetIsOnWithoutNotify(get_value()); };
                }
            };
        }
예제 #2
0
        public static void AddIntDiffListItem(this ICustomLayoutedMenu list, string description, Action <int> set_value, Func <int> get_value)
        {
            var obj = list.AddCustomButton(IntChanger);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure value field */
                var text_field = obj.transform.GetChild(1).GetComponent <TMP_Text>();
                text_field.text = get_value().ToString();

                /* Configure updater */
                var updater = obj.AddComponent <Updater>();
                updater.callback = () => { text_field.text = get_value().ToString(); };

                /* Configure buttons */
                Action ConstructChangeCallback(int diff)
                {
                    return(() =>
                    {
                        var value = get_value() + diff;
                        set_value.Invoke(value);
                        text_field.text = value.ToString();
                    });
                }

                obj.transform.GetChild(2).GetComponent <Button>().onClick.AddListener(ConstructChangeCallback(-1));
                obj.transform.GetChild(3).GetComponent <Button>().onClick.AddListener(ConstructChangeCallback(1));
            };
        }
예제 #3
0
        private static void AddGenericHeader(this ICustomLayoutedMenu menu, GameObject layout, string header)
        {
            var obj = menu.AddCustomButton(layout);

            obj.OnInstanceCreated += obj =>
            {
                obj.GetComponentInChildren <TMP_Text>().text = header;
            };
        }
예제 #4
0
        public static void AddSliderListItem(this ICustomLayoutedMenu list, string description, Action <float> set_value, Func <float> get_value, float min = -1.0f, float max = 1.0f)
        {
            var obj = list.AddCustomButton(FloatSlider);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure slider */
                var slider = obj.transform.GetChild(1).GetComponent <Slider>();
                slider.minValue = min;
                slider.maxValue = max;
                slider.value    = get_value();
                slider.onValueChanged.AddListener(set_value);

                /* Configure updater */
                var updater = obj.AddComponent <Updater>();
                updater.callback = () => { slider.SetValueWithoutNotify(get_value()); };
            };
        }
예제 #5
0
        public static void AddDropdownListItem(this ICustomLayoutedMenu list, string description, Type values, Action <int> on_change, int initial_state)
        {
            var obj = list.AddCustomButton(DropdownListItem);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure Enum Dropdown */
                var dropdown = obj.transform.GetChild(1).GetComponent <TMP_Dropdown>();
                var options  = new Il2CppSystem.Collections.Generic.List <string> {
                };
                foreach (var name in Enum.GetNames(values))
                {
                    options.Add(name);
                }
                dropdown.ClearOptions();
                dropdown.AddOptions(options);
                dropdown.value = initial_state;
                dropdown.onValueChanged.AddListener(on_change);
            };
        }