diff --git a/Managers/SettingsCategories/Interface.cs b/Managers/SettingsCategories/Interface.cs new file mode 100644 index 0000000..dbef807 --- /dev/null +++ b/Managers/SettingsCategories/Interface.cs @@ -0,0 +1,52 @@ +using MelonLoader; + +namespace SelectiveEffects.Managers; + +internal class Interface : Category +{ + private readonly MelonPreferences_Entry _disableHealthBar; + private readonly MelonPreferences_Entry _disableScore; + private readonly MelonPreferences_Entry _disableCombo; + private readonly MelonPreferences_Entry _disablePauseButton; + private readonly MelonPreferences_Entry _disableProgressBar; + + public Interface() + :base("Interface") + { + _disableHealthBar = _category.CreateEntry( + "DisableHealthBar", + false, + description: "Disable the health & fever bar." + ); + + _disableScore = _category.CreateEntry( + "DisableScore", + false, + description: "Disable the score." + ); + + _disableCombo = _category.CreateEntry( + "DisableCombo", + false, + description: "Disable the combo." + ); + + _disablePauseButton = _category.CreateEntry( + "DisablePauseButton", + false, + description: "Disable the pause button." + ); + + _disableProgressBar = _category.CreateEntry( + "DisableProgressBar", + false, + description: "Disable the progress bar." + ); + } + + internal bool DisableHealthBar => _disableHealthBar.Value; + internal bool DisableScore => _disableScore.Value; + internal bool DisableCombo => _disableCombo.Value; + internal bool DisablePauseButton => _disablePauseButton.Value; + internal bool DisableProgressBar => _disableProgressBar.Value; +} diff --git a/Managers/SettingsManager.cs b/Managers/SettingsManager.cs index 23c33d7..2f18407 100644 --- a/Managers/SettingsManager.cs +++ b/Managers/SettingsManager.cs @@ -72,6 +72,7 @@ private static void Init() Init(); Init(); Init(); + Init(); } private static void Init() diff --git a/Patches/InterfacePatch.cs b/Patches/InterfacePatch.cs new file mode 100644 index 0000000..ffab72c --- /dev/null +++ b/Patches/InterfacePatch.cs @@ -0,0 +1,55 @@ +using HarmonyLib; +using Il2CppAssets.Scripts.UI.Panels; +using SelectiveEffects.Managers; +using UnityEngine; + +namespace SelectiveEffects.Patches; + +[HarmonyPatch(typeof(PnlBattle), nameof(PnlBattle.GameStart))] +internal static class InterfacePatch +{ + private static readonly Interface Interface = SettingsManager.Get(); + + private static void Prefix() + { + var pnlBattleOthers = GameObject.Find("PnlBattleOthers"); + var up = pnlBattleOthers.transform.Find("Up"); + + if (Interface.DisableHealthBar) + { + var healthBar = pnlBattleOthers.transform.Find("Below").gameObject; + if (healthBar != null) + healthBar.SetActive(false); + } + + if (Interface.DisableScore) + { + var score = pnlBattleOthers.transform.Find("Score").gameObject; + if (score != null) + score.SetActive(false); + } + + if (Interface.DisableCombo) + { + var combo = GameObject.Find("PnlCommonUI"); + if (combo != null) + combo.SetActive(false); + + combo = GameObject.Find("PnlNewComboUI"); + if (combo != null) + combo.SetActive(false); + } + + if (Interface.DisablePauseButton) + { + var pauseButton = up.Find("BtnPause").GetChild(0).gameObject; + if (pauseButton != null) + pauseButton.SetActive(false); + } + + if (!Interface.DisableProgressBar) return; + var progressBar = up.Find("SldStageProgress").gameObject; + if (progressBar != null) + progressBar.SetActive(false); + } +}