internal void CreateSlider(ScadMod m, BepInExSettingsPacket w, SliderRange range) { Debug.Log("Creating Slider with name: " + Util.GetName(m, w)); DynData <OptionsPanel> d = new DynData <OptionsPanel>(optionsPanel); GameObject oldObj = d.Get <AgeControlSlider>("masterVolSlider").transform.parent.parent.gameObject; GameObject sliderGroup = (GameObject)GameObject.Instantiate(oldObj); sliderGroup.name = Util.GetName(m, w); sliderGroup.transform.SetParent(modSettingsTable.transform); Debug.Log("Slider Group Object Created!"); Debug.Log("OLD:"); Debug.Log("Slider: " + d.Get <AgeControlSlider>("masterVolSlider").transform); Debug.Log("Parent: " + d.Get <AgeControlSlider>("masterVolSlider").transform.parent); Debug.Log("Parent's Parent: " + d.Get <AgeControlSlider>("masterVolSlider").transform.parent.parent); Debug.Log("Children"); foreach (Transform t in d.Get <AgeControlSlider>("masterVolSlider").transform.parent.parent) { Debug.Log("Components:"); foreach (Component _ in t.GetComponents(typeof(Component))) { Debug.Log("- " + _); } } Transform slider = sliderGroup.transform.FindChild("20-SliderContainer").FindChild("10-Slider"); slider.gameObject.name = Util.GetName(m, w) + "_Slider"; AgeControlSlider sliderControl = slider.GetComponent <AgeControlSlider>(); Debug.Log("Created Slider Control!"); //slider.GetComponent<AgeTooltip>().Content = Util.GetName(m, f); Transform label = sliderGroup.transform.FindChild("0-Title"); label.gameObject.name = Util.GetName(m, w) + "_Label"; label.GetComponent <AgePrimitiveLabel>().Text = Util.GetName(m, w); sliderGroup.GetComponent <AgeTransform>().Position = d.Get <AgeControlSlider>("masterVolSlider").transform.parent.parent.GetComponent <AgeTransform>().Position; sliderGroup.GetComponent <AgeTransform>().PixelMarginTop = VisibleWrappers.Count * (settingSpacing + sliderGroup.GetComponent <AgeTransform>().Height); Debug.Log("Setup Slider Location!"); sliderControl.MinValue = range.Min; sliderControl.MaxValue = range.Max; sliderControl.Increment = range.Increment; if (w.Type.Equals(typeof(int))) { sliderControl.CurrentValue = ((ConfigWrapper <int>)w.Wrapper).Value; } else if (w.Type.Equals(typeof(float))) { sliderControl.CurrentValue = ((ConfigWrapper <float>)w.Wrapper).Value; } else if (w.Type.Equals(typeof(double))) { sliderControl.CurrentValue = (float)((ConfigWrapper <double>)w.Wrapper).Value; } Debug.Log("Setup Slider Control!"); sliderControl.AgeTransform.Position = d.Get <AgeControlSlider>("masterVolSlider").AgeTransform.Position; // Set to have same stats as old sliders sliderGroup.transform.FindChild("20-SliderContainer").GetComponent <AgeTransform>().PixelMarginLeft = 36; sliderGroup.transform.FindChild("20-SliderContainer").GetComponent <AgeTransform>().PixelMarginRight = 36; sliderGroup.transform.FindChild("20-SliderContainer").GetComponent <AgeTransform>().PixelMarginBottom = 6; //sliderGroup.transform.FindChild("20-SliderContainer").GetComponent<AgeTransform>().Width = 612; sliderGroup.transform.FindChild("10-SliderBg").GetComponent <AgeTransform>().PixelMarginBottom = 6; sliderGroup.transform.FindChild("30-Value").GetComponent <AgePrimitiveLabel>().Text = sliderControl.CurrentValue.ToString(); label.GetComponent <AgePrimitiveLabel>().AgeTransform.Height = 42; label.GetComponent <AgePrimitiveLabel>().AgeTransform.PixelMarginLeft = 8; sliderControl.AgeTransform.GetParent().X = 36; sliderControl.AgeTransform.GetParent().Y = 36; sliderControl.AgeTransform.GetParent().Width = d.Get <AgeControlSlider>("masterVolSlider").AgeTransform.GetParent().Width; sliderGroup.transform.FindChild("30-Value").GetComponent <AgeTransform>().Height = 42; sliderControl.OnDragMethod = "OnSliderDragged"; sliderControl.OnDragObject = transform.gameObject; Debug.Log("Arm - Method: " + sliderControl.OnArmMethod + " GameObject: " + sliderControl.OnArmObject); Debug.Log("Drag - Method: " + sliderControl.OnDragMethod + " GameObject: " + sliderControl.OnDragObject); Debug.Log("Release - Method: " + sliderControl.OnReleaseMethod + " GameObject: " + sliderControl.OnReleaseObject); VisibleWrappers.Add(w); sliders.Add(sliderControl); }
// This method creates all of the AgeControl items that correspond to mod settings // They are placed within the optionsPanel instance variable private void CreateSettings() { Debug.Log("Creating Settings!"); foreach (ScadMod m in mods) { Debug.Log("Attempting to find ConfigFile for mod: " + m.name); ConfigFile file = Util.GetConfigFile(m); Debug.Log("Mod: " + m.name + " with: " + file.ConfigDefinitions.Count + " fields."); foreach (ConfigDefinition d in file.ConfigDefinitions) { // If it exists in the config file, it is meant to be there. //TODO DEBUG! // NEED TO REDO ATTRIBUTES FOR RANGE HERE NOW THAT I REMOVED MOST OF THAT STUFF WITH BEPINEX if (d.Section.Equals(DustDevil.IGNORED_SETTINGS_SECTION_NAME)) { Debug.Log("Ignoring Definition: " + d.Key); continue; } Debug.Log("Attempting Definition: " + d.Key); //ConfigWrapper<object> wrapper = file.Wrap<object>(d); //Debug.Log("Definition: " + d + " has value: " + wrapper.Value); //if (wrapper.Value == null) //{ // Debug.Log("Wrapper value is null!"); // continue; //} try { Debug.Log("Attempting with type: bool"); ConfigWrapper <bool> wrapper = file.Wrap <bool>(d); Debug.Log("File path: " + file.ConfigFilePath); bool throwAway = wrapper.Value; var packet = new BepInExSettingsPacket(wrapper, wrapper.Definition.Key, typeof(bool)); Debug.Log("Showing bool with name: " + Util.GetName(m, packet)); CreateToggle(m, packet); AddDefaultSetting(m, packet, throwAway); } catch (Exception) { try { Debug.Log("Attempting with type: float"); ConfigWrapper <float> wrapper = file.Wrap <float>(d); float throwAway = wrapper.Value; var packet = new BepInExSettingsPacket(wrapper, wrapper.Definition.Key, typeof(float)); Debug.Log("Showing slider with name: " + Util.GetName(m, packet)); // Get SliderRange of this definition. SliderRange sliderRange = new SliderRange(); try { Debug.Log("Attempting to find slider range for slider: " + d.Key); // Attempt to get the lower and upper settings... ConfigWrapper <float> lowWrapper = file.Wrap <float>(DustDevil.IGNORED_SETTINGS_SECTION_NAME, d.Key + "Min", "The minimum value for " + d.Key + ".", sliderRange.Min); ConfigWrapper <float> highWrapper = file.Wrap <float>(DustDevil.IGNORED_SETTINGS_SECTION_NAME, d.Key + "Max", "The maximum value for " + d.Key + ".", sliderRange.Max); sliderRange = new SliderRange(lowWrapper.Value, highWrapper.Value); // Attempt to get the increment... ConfigWrapper <float> incrementWrapper = file.Wrap <float>(DustDevil.IGNORED_SETTINGS_SECTION_NAME, d.Key + "Increment", "How much to increment " + d.Key + " by.", sliderRange.Increment); sliderRange.SetIncrement(incrementWrapper.Value); } catch (Exception) { Debug.Log("Error when attempting to get a slider range object. Will use most recent functional slider range."); } Debug.Log("Creating a slider with SliderRange: " + sliderRange); CreateSlider(m, packet, sliderRange); AddDefaultSetting(m, packet, throwAway); } catch (Exception) { Debug.Log("Skipping Item with Name: " + d.Key + " as it was unparseable for settings!"); } } } Debug.Log("=========================================="); } }