예제 #1
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;
        }