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();