using System.Collections.Generic; using System.Reflection; using NitroxClient.GameLogic.Settings; using NitroxModel.Helper; using UnityEngine.Events; namespace NitroxPatcher.Patches.Persistent { public partial class uGUI_OptionsPanel_AddTabs_Patch : NitroxPatch, IPersistentPatch { private static readonly MethodInfo TARGET_METHOD = Reflect.Method((uGUI_OptionsPanel t) => t.AddTabs()); private static NitroxSettingsManager nitroxSettingsManager; public static void Postfix(uGUI_OptionsPanel __instance) { nitroxSettingsManager ??= Resolve(true); int tabIndex = __instance.AddTab("Nitrox"); foreach (KeyValuePair> settingEntries in nitroxSettingsManager.NitroxSettings) { __instance.AddHeading(tabIndex, settingEntries.Key); foreach (NitroxSettingsManager.Setting setting in settingEntries.Value) { switch (setting.SettingType) { case NitroxSettingsManager.SettingType.TOGGLE: __instance.AddToggleOption(tabIndex, setting.Label, setting.GetValue(), (UnityAction)setting.Callback); break; case NitroxSettingsManager.SettingType.SLIDER: __instance.AddSliderOption(tabIndex, setting.Label, setting.GetValue(), setting.SliderMinValue, setting.SliderMaxValue, setting.SliderDefaultValue, setting.SliderStep, (UnityAction)setting.Callback, setting.LabelMode, setting.FloatFormat, setting.Tooltip); break; case NitroxSettingsManager.SettingType.LIST: __instance.AddChoiceOption(tabIndex, setting.Label, setting.ListItems, setting.GetValue(), (UnityAction)setting.Callback); break; case NitroxSettingsManager.SettingType.BUTTON: __instance.AddButton(tabIndex, setting.Label, (UnityAction)setting.Callback); break; } } } } } }