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