From 99398b547923bc7fd2898adb163f5b7bdd9d1c24 Mon Sep 17 00:00:00 2001 From: b3ni15 Date: Mon, 15 Dec 2025 10:39:38 +0100 Subject: [PATCH] fix: Improve logging for menu transitions and resolve top-level canvas references in ServerBrowser --- Main.cs | 5 +++++ ServerBrowser/ServerBrowser.cs | 41 ++++++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/Main.cs b/Main.cs index 5a8c96a..2dc3cd9 100644 --- a/Main.cs +++ b/Main.cs @@ -232,6 +232,7 @@ namespace KCM FirstSibling = true, OnClick = () => { + Main.helper?.Log("Multiplayer button clicked"); SfxSystem.PlayUiSelect(); TransitionTo(MenuState.ServerBrowser); } @@ -320,6 +321,10 @@ namespace KCM if (ServerBrowser.KCMUICanvas != null) { ServerBrowser.KCMUICanvas.gameObject.SetActive((int)state > 21); + if (state == MenuState.ServerBrowser) + { + Main.helper?.Log($"TransitionTo ServerBrowser: browserRef={(ServerBrowser.serverBrowserRef != null ? "ready" : "null")}, canvas={(ServerBrowser.KCMUICanvas != null ? "ready" : "null")}"); + } helper.Log(((int)state > 21).ToString()); } diff --git a/ServerBrowser/ServerBrowser.cs b/ServerBrowser/ServerBrowser.cs index 2827b9e..14853d5 100644 --- a/ServerBrowser/ServerBrowser.cs +++ b/ServerBrowser/ServerBrowser.cs @@ -305,11 +305,10 @@ namespace KCM return; } - var topLevelCanvas = Constants.MainMenuUI_T.Find("MainMenu/TopLevel") - ?? Constants.MainMenuUI_T.Find("TopLevelUICanvas"); + var topLevelCanvas = ResolveMenuCanvas(); if (topLevelCanvas == null) { - Main.helper.Log("TopLevel/TopLevelUICanvas not found in ServerBrowser"); + Main.helper.Log("Failed to resolve top-level menu canvas in ServerBrowser"); return; } @@ -319,7 +318,16 @@ namespace KCM Destroy(kcmUICanvas.transform.GetChild(i).gameObject); kcmUICanvas.name = "KCMUICanvas"; - kcmUICanvas.transform.SetParent(Constants.MainMenuUI_T); + kcmUICanvas.transform.SetParent(Constants.MainMenuUI_T, false); + kcmUICanvas.transform.SetAsLastSibling(); + kcmUICanvas.SetActive(false); + + var canvasComponent = kcmUICanvas.GetComponent(); + if (canvasComponent != null) + { + canvasComponent.overrideSorting = true; + canvasComponent.sortingOrder = 999; + } KCMUICanvas = kcmUICanvas.transform; @@ -336,6 +344,8 @@ namespace KCM serverLobbyPlayerRef = serverLobbyRef.transform.Find("Container/PlayerList/Viewport/Content"); serverLobbyChatRef = serverLobbyRef.transform.Find("Container/PlayerChat/Viewport/Content"); serverLobbyRef.SetActive(false); + serverBrowserRef.transform.SetAsLastSibling(); + serverLobbyRef.transform.SetAsLastSibling(); //browser.transform.position = new Vector3(0, 0, 0); @@ -449,6 +459,29 @@ namespace KCM } } + private Transform ResolveMenuCanvas() + { + string[] candidatePaths = + { + "MainMenu/TopLevel/TopLevelUICanvas", + "MainMenu/TopLevel", + "TopLevelUICanvas", + "TopLevel" + }; + + foreach (var path in candidatePaths) + { + var transform = Constants.MainMenuUI_T.Find(path); + if (transform != null) + { + Main.helper.Log($"ServerBrowser: using canvas path '{path}'."); + return transform; + } + } + + return null; + } + private void Preload(KCModHelper helper) { helper.Log("Hello?");