Exemple #1
0
 void Awake()
 {
     singleton = this;
 }
Exemple #2
0
        private static GameObject SetupSubPanel(Transform parent)
        {
            GameObject subPanelToInstantiate = parent.Find("SettingsSubPanel, Controls (Gamepad)").gameObject;

            GameObject subPanelInstance = GameObject.Instantiate(subPanelToInstantiate, parent);

            Transform instanceLayout = subPanelInstance.transform.Find("Scroll View/Viewport/VerticalLayout");

            foreach (Transform child in instanceLayout)
            {
                GameObject.Destroy(child.gameObject);
            }

            GameObject sliderSetting   = subPanelToInstantiate.transform.Find("Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Slider (Look Scale X)").gameObject;
            GameObject boolSetting     = subPanelToInstantiate.transform.Find("Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Bool (Invert X)").gameObject;
            GameObject carouselSetting = parent.transform.Find("SettingsSubPanel, Video/Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Carousel (Vsync)").gameObject;

            LanguageTextMeshController descriptionText = parent.transform.Find("GenericDescriptionPanel/ContentSizeFitter/DescriptionText").GetComponent <LanguageTextMeshController>();

            bool first = true;

            foreach (KeyValuePair <string, ModConfig.ConfigSetting> keyValuePair in ModConfig.settings)
            {
                ModConfig.ConfigSetting setting = keyValuePair.Value;

                BaseSettingsControl settingInstance;
                if (setting.entry.SettingType == typeof(float) || setting.entry.SettingType == typeof(int))
                {
                    settingInstance = GameObject.Instantiate(sliderSetting, instanceLayout).GetComponent <BaseSettingsControl>();

                    SettingsSlider slider = settingInstance as SettingsSlider;
                    slider.minValue     = setting.minValue;
                    slider.maxValue     = setting.maxValue;
                    slider.formatString = setting.entry.SettingType == typeof(float) ? "{0:0.00}" : "{0:N0}";
                }
                else if (setting.entry.SettingType == typeof(bool))
                {
                    settingInstance = GameObject.Instantiate(boolSetting, instanceLayout).GetComponent <BaseSettingsControl>();
                }
                else
                {
                    settingInstance = GameObject.Instantiate(carouselSetting, instanceLayout).GetComponent <BaseSettingsControl>();

                    CarouselController carousel = settingInstance as CarouselController;
                    List <CarouselController.Choice> choices = new List <CarouselController.Choice>();
                    if (keyValuePair.Key == "vr_ray_color")
                    {
                        string[] choiceStrings = new string[]
                        {
                            "White",
                            "Green",
                            "Red",
                            "Blue",
                            "Yellow",
                            "Magenta",
                            "Cyan",
                            "Lime",
                            "Black"
                        };

                        string[] hexStrings = new string[]
                        {
                            "#FFFFFF",
                            "#008000",
                            "#FF0000",
                            "#0000FF",
                            "#FFFF00",
                            "#FF00FF",
                            "#00FFFF",
                            "#00FF00",
                            "#000000"
                        };

                        for (int i = 0; i < choiceStrings.Length; i++)
                        {
                            CarouselController.Choice choice = new CarouselController.Choice();
                            choice.convarValue           = hexStrings[i];
                            choice.suboptionDisplayToken = choiceStrings[i];
                            choices.Add(choice);
                        }
                    }

                    carousel.choices = choices.ToArray();
                }

                settingInstance.settingSource   = BaseSettingsControl.SettingSource.ConVar;
                settingInstance.nameToken       = setting.entry.Definition.Key;
                settingInstance.settingName     = keyValuePair.Key;
                settingInstance.gameObject.name = "VRModSetting, " + settingInstance.nameToken;

                HGButton button = settingInstance.GetComponent <HGButton>();
                if (button)
                {
                    string prefixString = "";

                    if (setting.settingUpdate == ModConfig.ConfigSetting.SettingUpdate.NextStage)
                    {
                        prefixString = "[WILL APPLY NEXT STAGE] ";
                    }
                    else if (setting.settingUpdate == ModConfig.ConfigSetting.SettingUpdate.AfterRestart)
                    {
                        prefixString = "[RESTART REQUIRED] ";
                    }

                    button.updateTextOnHover = true;
                    button.hoverToken        = prefixString + setting.entry.Description.Description;
                    button.hoverLanguageTextMeshController = descriptionText;

                    button.defaultFallbackButton = first;
                    first = false;
                }
            }

            GameObject controllerBindingSetting = subPanelToInstantiate.transform.Find("Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Binding (Jump)").gameObject;
            GameObject keyboardBindingSetting   = parent.Find("SettingsSubPanel, Controls (M&KB)/Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Binding (Jump)").gameObject;

            ActionAddons.ActionDef[] actionDefs = ActionAddons.actionDefs;
            foreach (var actionDef in actionDefs)
            {
                if (actionDef.keyboardMap != KeyboardKeyCode.None)
                {
                    AddBindingSetting(actionDef, keyboardBindingSetting, instanceLayout);
                }
                if (actionDef.joystickMap != ActionAddons.ControllerInput.None)
                {
                    AddBindingSetting(actionDef, controllerBindingSetting, instanceLayout);
                }
            }

            subPanelInstance.transform.Find("Scroll View").gameObject.AddComponent <ScrollToSelection>();

            return(subPanelInstance);
        }