protected override void Setup() { // Get settings ModSettingsReader.GetSettings(mod, out data, out defaultSettings); config = ModSettingsReader.GetConfig(mod); presets = ModSettingsReader.GetPresets(mod); // Setup base panel ParentPanel.BackgroundColor = Color.clear; modSettingsPanel.BackgroundColor = panelBackgroundColor; modSettingsPanel.Outline.Enabled = true; modSettingsPanel.HorizontalAlignment = HorizontalAlignment.Center; modSettingsPanel.Position = new Vector2(0, 8); modSettingsPanel.Size = new Vector2(320, 175); NativePanel.Components.Add(modSettingsPanel); // Initialize window Init(); }
/// <summary> /// Load settings from IniData. /// This will be read from the ini file on disk the first time. /// </summary> private void LoadSettings() { // Read file if (data == null) { data = parser.ReadFile(path); ModSettingsReader.UpdateSettings(ref data, defaultSettings, Mod); config = ModSettingsReader.GetConfig(Mod); } // Read settings foreach (SectionData section in data.Sections.Where(x => x.SectionName != ModSettingsReader.internalSection)) { // Section label TextLabel textLabel = new TextLabel(); textLabel.Text = section.SectionName; textLabel.TextColor = sectionTitleColor; textLabel.Position = new Vector2(x, y); textLabel.HorizontalAlignment = HorizontalAlignment.None; currentPanel.Components.Add(textLabel); MovePosition(spacing + 4); List <string> comments = section.Comments; int comment = 0; foreach (KeyData key in section.Keys) { // Setting label TextLabel settingName = new TextLabel(); settingName.Text = key.KeyName; settingName.Position = new Vector2(x, y); settingName.HorizontalAlignment = HorizontalAlignment.None; if (comment < comments.Count) { settingName.ToolTip = defaultToolTip; settingName.ToolTipText = comments[comment]; comment++; } currentPanel.Components.Add(settingName); // Setting field ModSettingsKey configKey; if (config && config.Key(section.SectionName, key.KeyName, out configKey)) { settingName.ToolTipText = configKey.description; // Use config file switch (configKey.type) { case ModSettingsKey.KeyType.Toggle: AddCheckBox(key.Value == "True"); break; case ModSettingsKey.KeyType.Slider: var slider = configKey.slider; int startValue; if (!int.TryParse(key.Value, out startValue)) { startValue = 0; } AddSlider(slider.min, slider.max, startValue, key.KeyName); break; case ModSettingsKey.KeyType.FloatSlider: var floatSlider = configKey.floatSlider; float floatStartValue; if (!float.TryParse(key.Value, out floatStartValue)) { floatStartValue = 0; } AddSlider(floatSlider.min, floatSlider.max, floatStartValue, key.KeyName); break; case ModSettingsKey.KeyType.Tuple: case ModSettingsKey.KeyType.FloatTuple: int index = key.Value.IndexOf(ModSettingsReader.tupleDelimiterChar); var first = GetTextbox(95, 19.6f, key.Value.Substring(0, index)); var second = GetTextbox(116, 19.6f, key.Value.Substring(index + ModSettingsReader.tupleDelimiterChar.Length)); modTuples.Add(new Tuple <TextBox, TextBox>(first, second)); break; case ModSettingsKey.KeyType.Text: case ModSettingsKey.KeyType.MultipleChoice: //TODO TextBox textBox = GetTextbox(95, 40, key.Value); modTextBoxes.Add(textBox); break; case ModSettingsKey.KeyType.Color: TextBox colorBox = GetTextbox(95, 40, key.Value); modTextBoxes.Add(colorBox); int hexColor; if (colorBox.DefaultText.Length != 8 || !int.TryParse(colorBox.DefaultText, System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out hexColor)) { colorBox.DefaultText = "FFFFFFFF"; } // Use box background as a preview of the color Color32 color = ModSettingsReader.ColorFromString(colorBox.DefaultText); colorBox.BackgroundColor = color; colorBox.ToolTip = defaultToolTip; colorBox.ToolTipText = color.ToString(); break; } } else { // Legacy support if (key.Value == "True") { AddCheckBox(true); } else if (key.Value == "False") { AddCheckBox(false); } else if (key.Value.Contains(ModSettingsReader.tupleDelimiterChar)) // Tuple { int index = key.Value.IndexOf(ModSettingsReader.tupleDelimiterChar); var first = GetTextbox(95, 19.6f, key.Value.Substring(0, index)); var second = GetTextbox(116, 19.6f, key.Value.Substring(index + ModSettingsReader.tupleDelimiterChar.Length)); modTuples.Add(new Tuple <TextBox, TextBox>(first, second)); } else { TextBox textBox = GetTextbox(95, 40, key.Value); modTextBoxes.Add(textBox); // Color if (textBox.DefaultText.Length == 8) { // Check if is a hex number or just a string with lenght eight int hexColor; if (int.TryParse(textBox.DefaultText, System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out hexColor)) { // Use box background as a preview of the color Color32 color = ModSettingsReader.ColorFromString(textBox.DefaultText); textBox.BackgroundColor = color; textBox.ToolTip = defaultToolTip; textBox.ToolTipText = color.ToString(); } } } } MovePosition(spacing); } } }