using MelonLoader; using UnityEngine; using UnityEngine.UI; using TMPro; using UnityEngine.EventSystems; [assembly: MelonInfo(typeof(DohmStashRehydrated.Core), "DohmStashRehydrated", "1.0.0", "DohmBoy64bit", null)] [assembly: MelonGame("TVGS", "Schedule I")] namespace DohmStashRehydrated { public class Core : MelonMod { public static bool policeDisabled = false; private bool menuInitialized = false; private bool menuVisible = false; private GameObject menuObject; private EventSystem eventSystem; private CanvasScaler canvasScaler; private List categoryPanels = new List(); public override void OnInitializeMelon() { MelonLogger.Msg("[DohmStash] Initializing mod..."); } public override void OnUpdate() { if (Input.GetKeyDown(KeyCode.F1)) { if (!menuInitialized) { InitializeMenu(); } else { ToggleMenu(); } } } private void InitializeMenu() { try { MelonLogger.Msg("[DohmStash] Creating menu..."); // Create EventSystem for mouse input eventSystem = new GameObject("EventSystem").AddComponent(); eventSystem.gameObject.AddComponent(); // Create Canvas GameObject canvasObj = new GameObject("MenuCanvas"); Canvas canvas = canvasObj.AddComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvas.sortingOrder = 1000; // Add CanvasScaler for proper UI scaling canvasScaler = canvasObj.AddComponent(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2(1920, 1080); canvasScaler.matchWidthOrHeight = 0.5f; // Create main menu panel menuObject = CreatePanel(canvasObj.transform, "MenuPanel", new Vector2(400, 600), new Vector2(0, 0)); menuObject.SetActive(false); // Create header GameObject header = CreatePanel(menuObject.transform, "Header", new Vector2(400, 50), new Vector2(0, 275)); header.GetComponent().color = new Color(0.1f, 0.1f, 0.1f, 0.95f); CreateText(header.transform, "Title", "DohmStash Menu", 24, TextAlignmentOptions.Center, new Vector2(0, 0)); // Create close button GameObject closeButton = CreateButton(header.transform, "CloseButton", new Vector2(40, 40), new Vector2(180, 0)); closeButton.GetComponent().color = new Color(0.8f, 0.2f, 0.2f, 0.95f); CreateText(closeButton.transform, "CloseText", "X", 20, TextAlignmentOptions.Center, new Vector2(0, 0)); closeButton.GetComponent