From 2c08e89e307b4a9f3c6f7a242494a5ae8404d48c Mon Sep 17 00:00:00 2001 From: Az <56699741+AlchlcDvl@users.noreply.github.com> Date: Sun, 13 Sep 2026 16:41:19 -0400 Subject: [PATCH] Revert "forgot shapeshifter's menu is a minigame itself" This reverts commit f62513a3b4abb87c944a0bf7fa4ce473d004e780. --- MiraAPI/Hud/CustomPhoneMenu.cs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/MiraAPI/Hud/CustomPhoneMenu.cs b/MiraAPI/Hud/CustomPhoneMenu.cs index 8873aaca..51f508f3 100644 --- a/MiraAPI/Hud/CustomPhoneMenu.cs +++ b/MiraAPI/Hud/CustomPhoneMenu.cs @@ -12,6 +12,22 @@ using Object = UnityEngine.Object; namespace MiraAPI.Hud; +/// +/// Component registered in Il2Cpp domain to handle Unity events for custom menus. +/// +[RegisterInIl2Cpp] +public class CustomPhoneMenuComponent(IntPtr cppPtr) : Minigame(cppPtr) +{ + [SuppressMessage("Style", "IDE0051:Remove unused private members", Justification = "Unity convention.")] + private void OnDisable() + { + if (ControllerManager.Instance) + { + ControllerManager.Instance.CloseOverlayMenu(name); + } + } +} + /// /// Defines an entry in a with a Panel. /// @@ -94,7 +110,7 @@ public abstract class CustomPhoneMenu : ICustomMenu /// /// Gets the wrapped component that the menu modifies. /// - public ShapeshifterMinigame Component { get; internal set; } = null!; + public CustomPhoneMenuComponent Component { get; internal set; } = null!; /// public List MenuEntries { get; protected set; } = []; @@ -155,9 +171,10 @@ public abstract class CustomPhoneMenu : ICustomMenu var ogMenu = shapeShifterRole.TryCast()!.ShapeshifterMenu; var newMenu = Object.Instantiate(ogMenu); + var component = newMenu.gameObject.AddComponent(); var customMenu = new TMenu { - Component = newMenu, + Component = component, panelPrefab = newMenu.PanelPrefab, xStart = newMenu.XStart, yStart = newMenu.YStart, @@ -171,6 +188,10 @@ public abstract class CustomPhoneMenu : ICustomMenu back.OnClick.RemoveAllListeners(); back.OnClick.AddListener((UnityAction)customMenu.Close); + component.CloseSound = newMenu.CloseSound; + component.logger = newMenu.logger; + component.OpenSound = newMenu.OpenSound; + newMenu.DestroyImmediate(); customMenu.transform.SetParent(Camera.main!.transform, false);