コード例 #1
0
            /// <summary>
            /// Applied after SetTarget runs.
            /// </summary>
            internal static void Postfix(KNumberInputField ___numberInput,
                                         GameObject new_target)
            {
                float normalMax = (___numberInput == null) ? ___numberInput.maxValue : 0.0f;

                if (new_target != null)
                {
                    var sw = new_target.GetComponent <IThresholdSwitch>();
                    if (sw != null && ShouldAffect(normalMax, sw))
                    {
                        ___numberInput.maxValue = float.MaxValue;
                    }
                }
            }
コード例 #2
0
            /// <summary>
            /// Applied after SetTarget runs.
            /// </summary>
            internal static void Postfix(KNumberInputField ___numberInput,
                                         GameObject new_target)
            {
                float normalMax = (___numberInput == null) ? ___numberInput.maxValue : 0.0f;

                if (new_target != null)
                {
                    var cdp = new_target.GetComponent <CreatureDeliveryPoint>();
                    if (cdp != null && ShouldAffect(normalMax, cdp))
                    {
                        ___numberInput.maxValue = float.MaxValue;
                    }
                }
            }
コード例 #3
0
        private static void SetupInputs(NonLinearSlider slider, KNumberInputField input, NonLinearSlider.Range[] sliderRanges, float inputMin, float inputMax, int inputDecimals, Action <float> onUpdate, Func <float, float> convertSlider, Func <float, float> convertInput)
        {
            slider.onDrag        += () => onUpdate(convertSlider(slider.GetValueForPercentage(slider.value)));
            slider.onPointerDown += () => onUpdate(convertSlider(slider.GetValueForPercentage(slider.value)));
            slider.onMove        += () => onUpdate(convertSlider(slider.GetValueForPercentage(slider.value)));
            slider.minValue       = 0;
            slider.maxValue       = 100;
            slider.SetRanges(sliderRanges);

            input.onEndEdit    += () => onUpdate(convertInput(input.currentValue));
            input.decimalPlaces = inputDecimals;
            input.minValue      = inputMin;
            input.maxValue      = inputMax;
            input.Activate();
        }
コード例 #4
0
        protected override void OnPrefabInit()
        {
            Log.Spam($"OnPrefabInit");

            base.OnPrefabInit();

            titleKey = "STRINGS.UI.UISIDESCREENS.COMBO_SENSOR_SIDESCREEN.TITLE";

            var sideScreens = Traverse.Create(DetailsScreen.Instance).Field <List <DetailsScreen.SideScreenRef> >("sideScreens").Value;

            if (sideScreens == null)
            {
                Log.Error("No sideScreens");
                return;
            }

            Traverse thresholdSwitchSideScreen = null;

            foreach (var sideScreen in sideScreens)
            {
                var component = sideScreen.screenPrefab?.GetComponent <ThresholdSwitchSideScreen>();
                if (component != null)
                {
                    thresholdSwitchSideScreen = Traverse.Create(component);
                    break;
                }
            }
            if (thresholdSwitchSideScreen == null)
            {
                Log.Error("No ThresholdSwitchSideScreen");
                return;
            }

            var locText         = thresholdSwitchSideScreen.Field <LocText>("currentValue").Value;
            var aboveToggle     = thresholdSwitchSideScreen.Field <KToggle>("aboveToggle").Value;
            var belowToggle     = thresholdSwitchSideScreen.Field <KToggle>("belowToggle").Value;
            var thresholdSlider = thresholdSwitchSideScreen.Field <NonLinearSlider>("thresholdSlider").Value;
            var numberInput     = thresholdSwitchSideScreen.Field <KNumberInputField>("numberInput").Value;

            var dummyPanel = Gui.CreatePanel();

            var mainPanel = Gui.CreatePanel();

            mainPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);

            {
                var groupPanel = Gui.CreatePanel(parent: mainPanel);
                groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f);
                groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);

                temperatureCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel);
                temperatureCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20;

                var buttonPanel = Gui.CreatePanel(parent: groupPanel);
                buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);
                temperatureBelow = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel);
                temperatureAbove = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel);

                temperatureSlider = Gui.Create <NonLinearSlider>(prefab: thresholdSlider.gameObject, parent: groupPanel);

                temperatureInput = Gui.Create <KNumberInputField>(prefab: numberInput.gameObject, parent: groupPanel);
                temperatureInput.FindOrAddComponent <LayoutElement>().minHeight = 30;
                temperatureInput.transform.Find("UnitsLabel")?.DeleteObject();
            }

            Gui.CreatePanel(parent: mainPanel).FindOrAddComponent <LayoutElement>().minHeight = 5;

            {
                var groupPanel = Gui.CreatePanel(parent: mainPanel);
                groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f);
                groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);

                massCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel);
                massCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20;

                var buttonPanel = Gui.CreatePanel(parent: groupPanel);
                buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);
                massBelow = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel);
                massAbove = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel);

                massSlider = Gui.Create <NonLinearSlider>(prefab: thresholdSlider.gameObject, parent: groupPanel);

                massInput = Gui.Create <KNumberInputField>(prefab: numberInput.gameObject, parent: groupPanel);
                massInput.FindOrAddComponent <LayoutElement>().minHeight = 30;
                massInput.transform.Find("UnitsLabel")?.DeleteObject();
            }

            Gui.CreatePanel(parent: mainPanel).FindOrAddComponent <LayoutElement>().minHeight = 5;

            {
                var groupPanel = Gui.CreatePanel(parent: mainPanel);
                groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f);
                groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);

                germsCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel);
                germsCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20;

                var buttonPanel = Gui.CreatePanel(parent: groupPanel);
                buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);
                germsBelow = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel);
                germsAbove = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel);

                germsSlider = Gui.Create <NonLinearSlider>(prefab: thresholdSlider.gameObject, parent: groupPanel);

                germsInput = Gui.Create <KNumberInputField>(prefab: numberInput.gameObject, parent: groupPanel);
                germsInput.FindOrAddComponent <LayoutElement>().minHeight = 30;
                germsInput.transform.Find("UnitsLabel")?.DeleteObject();

                DumpTree(germsInput.gameObject);
            }

            Gui.CreatePanel(parent: mainPanel).FindOrAddComponent <LayoutElement>().minHeight = 5;

            {
                var groupPanel = Gui.CreatePanel(parent: mainPanel);
                groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f);
                groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);

                materialCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel);
                materialCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20;

                var buttonPanel = Gui.CreatePanel(parent: groupPanel);
                buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);
                materialChecked   = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel);
                materialUnchecked = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel);
            }

            gameObject.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5);
            LayoutElement layoutElement = gameObject.FindOrAddComponent <LayoutElement>();

            layoutElement.minWidth        = 150;
            layoutElement.preferredWidth  = 150;
            layoutElement.minHeight       = 450;
            layoutElement.preferredHeight = 450;

            mainPanel.transform.SetParent(gameObject.transform);
            ContentContainer = mainPanel;
        }
コード例 #5
0
    private GameObject SpawnSlider(SliderValue value)
    {
        GameObject          gameObject = Util.KInstantiateUI(sliderPropertyPrefab, base.gameObject, true);
        HierarchyReferences component  = gameObject.GetComponent <HierarchyReferences>();

        component.GetReference <Image>("BottomIcon").sprite = Assets.GetSprite(value.bottomSprite);
        component.GetReference <Image>("TopIcon").sprite    = Assets.GetSprite(value.topSprite);
        KSlider           slider     = component.GetReference <KSlider>("Slider");
        KNumberInputField inputField = component.GetReference <KNumberInputField>("InputField");

        gameObject.GetComponent <ToolTip>().SetSimpleTooltip(value.tooltip);
        slider.minValue     = value.minValue;
        slider.maxValue     = value.maxValue;
        inputField.minValue = 0f;
        inputField.maxValue = 99999f;
        inputFields.Add(inputField.gameObject);
        value.slider            = slider;
        value.inputField        = inputField;
        value.row               = gameObject;
        slider.onReleaseHandle += delegate
        {
            slider.value            = Mathf.Round(slider.value * 10f) / 10f;
            inputField.currentValue = slider.value;
            inputField.SetDisplayValue(inputField.currentValue.ToString());
            if (value.onValueChanged != null)
            {
                value.onValueChanged(slider.value);
            }
        };
        slider.onDrag += delegate
        {
            slider.value            = Mathf.Round(slider.value * 10f) / 10f;
            inputField.currentValue = slider.value;
            inputField.SetDisplayValue(inputField.currentValue.ToString());
            if (value.onValueChanged != null)
            {
                value.onValueChanged(slider.value);
            }
        };
        slider.onMove += delegate
        {
            slider.value            = Mathf.Round(slider.value * 10f) / 10f;
            inputField.currentValue = slider.value;
            inputField.SetDisplayValue(inputField.currentValue.ToString());
            if (value.onValueChanged != null)
            {
                value.onValueChanged(slider.value);
            }
        };
        inputField.onEndEdit += delegate
        {
            float num = Mathf.Clamp(Mathf.Round(inputField.currentValue), inputField.minValue, inputField.maxValue);
            inputField.SetDisplayValue(num.ToString());
            slider.value = Mathf.Round(num);
            if (value.onValueChanged != null)
            {
                value.onValueChanged(num);
            }
        };
        component.GetReference <LocText>("UnitLabel").text = value.unitString;
        return(gameObject);
    }