fix: Improve logging for menu transitions and resolve top-level canvas references in ServerBrowser

This commit is contained in:
2025-12-15 10:39:38 +01:00
parent 270a92c617
commit 99398b5479
2 changed files with 42 additions and 4 deletions

View File

@@ -232,6 +232,7 @@ namespace KCM
FirstSibling = true, FirstSibling = true,
OnClick = () => OnClick = () =>
{ {
Main.helper?.Log("Multiplayer button clicked");
SfxSystem.PlayUiSelect(); SfxSystem.PlayUiSelect();
TransitionTo(MenuState.ServerBrowser); TransitionTo(MenuState.ServerBrowser);
} }
@@ -320,6 +321,10 @@ namespace KCM
if (ServerBrowser.KCMUICanvas != null) if (ServerBrowser.KCMUICanvas != null)
{ {
ServerBrowser.KCMUICanvas.gameObject.SetActive((int)state > 21); 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()); helper.Log(((int)state > 21).ToString());
} }

View File

@@ -305,11 +305,10 @@ namespace KCM
return; return;
} }
var topLevelCanvas = Constants.MainMenuUI_T.Find("MainMenu/TopLevel") var topLevelCanvas = ResolveMenuCanvas();
?? Constants.MainMenuUI_T.Find("TopLevelUICanvas");
if (topLevelCanvas == null) 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; return;
} }
@@ -319,7 +318,16 @@ namespace KCM
Destroy(kcmUICanvas.transform.GetChild(i).gameObject); Destroy(kcmUICanvas.transform.GetChild(i).gameObject);
kcmUICanvas.name = "KCMUICanvas"; 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<Canvas>();
if (canvasComponent != null)
{
canvasComponent.overrideSorting = true;
canvasComponent.sortingOrder = 999;
}
KCMUICanvas = kcmUICanvas.transform; KCMUICanvas = kcmUICanvas.transform;
@@ -336,6 +344,8 @@ namespace KCM
serverLobbyPlayerRef = serverLobbyRef.transform.Find("Container/PlayerList/Viewport/Content"); serverLobbyPlayerRef = serverLobbyRef.transform.Find("Container/PlayerList/Viewport/Content");
serverLobbyChatRef = serverLobbyRef.transform.Find("Container/PlayerChat/Viewport/Content"); serverLobbyChatRef = serverLobbyRef.transform.Find("Container/PlayerChat/Viewport/Content");
serverLobbyRef.SetActive(false); serverLobbyRef.SetActive(false);
serverBrowserRef.transform.SetAsLastSibling();
serverLobbyRef.transform.SetAsLastSibling();
//browser.transform.position = new Vector3(0, 0, 0); //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) private void Preload(KCModHelper helper)
{ {
helper.Log("Hello?"); helper.Log("Hello?");