From 11938722b7c784b97fae0b87ecd14b3e655e6e0f Mon Sep 17 00:00:00 2001 From: Aireil <33433913+Aireil@users.noreply.github.com> Date: Fri, 30 Apr 2021 17:17:30 +0200 Subject: [PATCH] feat: setting for buttons in system menu --- Dalamud/Configuration/DalamudConfiguration.cs | 5 +++++ Dalamud/Game/Addon/DalamudSystemMenu.cs | 6 ++++++ Dalamud/Interface/DalamudSettingsWindow.cs | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index d4e5b8734..dc9ea65ed 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -97,6 +97,11 @@ namespace Dalamud.Configuration /// public bool AutoUpdatePlugins { get; set; } + /// + /// Gets or sets a value indicating whether or not Dalamud should add buttons to the system menu. + /// + public bool DoButtonsSystemMenu { get; set; } = true; + /// /// Gets or sets a value indicating whether or not the debug log should scroll automatically. /// diff --git a/Dalamud/Game/Addon/DalamudSystemMenu.cs b/Dalamud/Game/Addon/DalamudSystemMenu.cs index 7f8590c1b..7532463d6 100644 --- a/Dalamud/Game/Addon/DalamudSystemMenu.cs +++ b/Dalamud/Game/Addon/DalamudSystemMenu.cs @@ -71,6 +71,12 @@ namespace Dalamud.Game.Addon private void AgentHudOpenSystemMenuDetour(void* thisPtr, AtkValue* atkValueArgs, uint menuSize) { + if (!this.dalamud.Configuration.DoButtonsSystemMenu) + { + this.hookAgentHudOpenSystemMenu.Original(thisPtr, atkValueArgs, menuSize); + return; + } + // the max size (hardcoded) is 0xE/15, but the system menu currently uses 0xC/12 // this is a just in case that doesnt really matter // see if we can add 2 entries diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs index d358d269f..152e7ff32 100644 --- a/Dalamud/Interface/DalamudSettingsWindow.cs +++ b/Dalamud/Interface/DalamudSettingsWindow.cs @@ -44,6 +44,7 @@ namespace Dalamud.Interface this.printPluginsWelcomeMsg = this.dalamud.Configuration.PrintPluginsWelcomeMsg; this.autoUpdatePlugins = this.dalamud.Configuration.AutoUpdatePlugins; + this.doButtonsSystemMenu = this.dalamud.Configuration.DoButtonsSystemMenu; this.languages = Localization.ApplicableLangCodes.Prepend("en").ToArray(); try @@ -136,6 +137,7 @@ namespace Dalamud.Interface private bool printPluginsWelcomeMsg; private bool autoUpdatePlugins; + private bool doButtonsSystemMenu; private string thirdRepoTempUrl = string.Empty; private string thirdRepoAddError = string.Empty; @@ -184,6 +186,9 @@ namespace Dalamud.Interface ImGui.Checkbox(Loc.Localize("DalamudSettingsAutoUpdatePlugins", "Auto-update plugins"), ref this.autoUpdatePlugins); ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingsAutoUpdatePluginsMsgHint", "Automatically update plugins when logging in with a character.")); + ImGui.Checkbox(Loc.Localize("DalamudSettingsSystemMenu", "Dalamud buttons in system menu"), ref this.doButtonsSystemMenu); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingsSystemMenuMsgHint", "Add buttons for Dalamud plugins and settings to the system menu.")); + ImGui.EndTabItem(); } @@ -392,6 +397,7 @@ namespace Dalamud.Interface this.dalamud.Configuration.PrintPluginsWelcomeMsg = this.printPluginsWelcomeMsg; this.dalamud.Configuration.AutoUpdatePlugins = this.autoUpdatePlugins; + this.dalamud.Configuration.DoButtonsSystemMenu = this.doButtonsSystemMenu; this.dalamud.Configuration.Save();