From 513be01c02a2402bbf928ce430617fb01ee8709a Mon Sep 17 00:00:00 2001 From: WanderingPixel <126269533+WanderingPix@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:12:15 +0100 Subject: [PATCH] Add Keybind icons for custom buttons --- MiraAPI/Hud/CustomActionButton.cs | 17 ++++++++++++++++- MiraAPI/Resources/KeybindButton.png | Bin 0 -> 3418 bytes MiraAPI/Utilities/Assets/MiraAssets.cs | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 MiraAPI/Resources/KeybindButton.png diff --git a/MiraAPI/Hud/CustomActionButton.cs b/MiraAPI/Hud/CustomActionButton.cs index ac48c4a..78fa114 100644 --- a/MiraAPI/Hud/CustomActionButton.cs +++ b/MiraAPI/Hud/CustomActionButton.cs @@ -1,11 +1,14 @@ using System; using System.Globalization; +using System.Linq; using MiraAPI.Events; using MiraAPI.Events.Mira; +using MiraAPI.Keybinds; using MiraAPI.Patches; using MiraAPI.Utilities; using MiraAPI.Utilities.Assets; using Rewired; +using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; @@ -120,6 +123,11 @@ public abstract class CustomActionButton /// public ActionButton? Button { get; set; } + /// + /// Gets the gameObject used for the keybind icon. + /// + public GameObject KeybindIcon { get; set; } + /// /// The method used to create the button. /// @@ -191,6 +199,13 @@ public abstract class CustomActionButton } } })); + + KeybindIcon = Object.Instantiate(Button.usesRemainingSprite.gameObject, Button.transform); + KeybindIcon.GetComponent().sprite = MiraAssets.KeybindButton.LoadAsset(); + KeybindIcon.transform.GetChild(0).GetComponent().text = + KeybindManager.GetEntries().First(x => x.Id == $"{Name}_Keybind").Key.ToString(); + KeybindIcon.name = "KeybindIcon"; + KeybindIcon.transform.localPosition = new(0.341f, 0.374f, -0.1f); } /// @@ -558,4 +573,4 @@ public abstract class CustomActionButton : CustomActionButton where T : MonoB Target = null; SetOutline(false); } -} +} \ No newline at end of file diff --git a/MiraAPI/Resources/KeybindButton.png b/MiraAPI/Resources/KeybindButton.png new file mode 100644 index 0000000000000000000000000000000000000000..e537b3b5eb9228e966561af347d06adc898296e4 GIT binary patch literal 3418 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 HAujemkRu07 literal 0 HcmV?d00001 diff --git a/MiraAPI/Utilities/Assets/MiraAssets.cs b/MiraAPI/Utilities/Assets/MiraAssets.cs index 1bd130a..148c65a 100644 --- a/MiraAPI/Utilities/Assets/MiraAssets.cs +++ b/MiraAPI/Utilities/Assets/MiraAssets.cs @@ -94,4 +94,9 @@ public static class MiraAssets /// Gets the white CategoryHeader used in the Settings Menu. /// public static LoadableResourceAsset CategoryHeader { get; } = new("MiraAPI.Resources.CategoryHeader.png"); + + /// + /// Gets the sprite used for the Keybind icons. + /// + public static LoadableResourceAsset KeybindButton { get; } = new("MiraAPI.Resources.KeybindButton.png"); }