private void NumberSettingOnClick(UIMouseEvent evt, UIElement listeningElement) { try { foreach (ModSetting ms in TModSettings.modSettings) { foreach (UIPanelSortable ps in ms.GetUIElements()) { // Don't unfocus the one just clicked. if (ps == listeningElement) { continue; } if (ps.GetType() == typeof(UINumberSetting)) { UINumberSetting numbers = (UINumberSetting)ps; // Unfocus numbers.SetValueFromText(); } } } } catch { } }
public void PostModLoad() { _modListContainer.Clear(); // Create a UIModEntry for each mod settings config added to this mod. foreach (ModSetting modSetting in TModSettings.modSettings) { UIModEntry entry = new UIModEntry(modSetting); entry.OnClick += ModListOnClick; _modListContainer.Add(entry); _modListElements.Add(entry); // Add UI elements for each stored variable in reverse to match order added in code Queue <UIPanelSortable> uiElements = modSetting.GetUIElements(); Queue <StoredVariable> storedvars = modSetting.GetStoredVariables(); if (storedvars.Count > 0) { int count = 0; foreach (StoredVariable sv in storedvars) { if (sv.IsBoolean) { UIBoolSetting element = new UIBoolSetting(sv); element.index = count; uiElements.Enqueue(element); } else if (sv.IsWholeNumbers || sv.IsDecimalNumbers) { UINumberSetting element = new UINumberSetting(sv); element.index = count; element.OnClick += NumberSettingOnClick; uiElements.Enqueue(element); } else if (sv.IsComment) { UITextWrapPanel element = new UITextWrapPanel(); element.index = count; element.SetTextScale(sv.DisplayName, (float)sv.storedValue); uiElements.Enqueue(element); } count++; } } } _modListContainer.UpdateOrder(); }