From ffd42a4a913f7d5de614bb9bb7aa505b1c352774 Mon Sep 17 00:00:00 2001 From: ReAdmin <170283204+rewalo@users.noreply.github.com> Date: Wed, 7 Oct 2026 02:44:04 -0700 Subject: [PATCH] Copy the original label layout onto the cloned wiki search field --- MiraAPI/Patches/RoleGuidePatches.cs | 68 +++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/MiraAPI/Patches/RoleGuidePatches.cs b/MiraAPI/Patches/RoleGuidePatches.cs index 534f8d1..ce0a589 100644 --- a/MiraAPI/Patches/RoleGuidePatches.cs +++ b/MiraAPI/Patches/RoleGuidePatches.cs @@ -249,6 +249,15 @@ public static class RoleGuidePatches var searchButton = searchBox.GetComponent(); var tmpText = searchButton.transform.GetChild(0).GetComponent(); tmpText.GetComponent().Destroy(); + tmpText.color = new Color(0.75f, 0.75f, 0.75f); + tmpText.text = string.Empty; + tmpText.fontSizeMax = 4; + tmpText.overflowMode = TextOverflowModes.Ellipsis; + tmpText.alignment = TextAlignmentOptions.Left; + tmpText.horizontalAlignment = HorizontalAlignmentOptions.Left; + tmpText.rectTransform.offsetMax = new Vector2(-0.1531f, 0.2972f); + tmpText.rectTransform.sizeDelta = new Vector2(3, 1); + tmpText.transform.localPosition = new Vector3(0, 0.0343f, -0.2f); var inactive = searchButton.inactiveSprites; var selected = searchButton.selectedSprites; var highlight = searchButton.activeSprites; @@ -288,37 +297,34 @@ public static class RoleGuidePatches } var outputText = _searchBoxTmp.outputText; + var textParent = tmpText.transform.parent; + outputText.transform.SetParent(textParent, false); outputText.GetComponent()?.Destroy(); - outputText.font = tmpText.font; - outputText.fontSharedMaterial = tmpText.fontSharedMaterial; + CopyTextLayout(tmpText, outputText); outputText.color = new Color(0.75f, 0.75f, 0.75f); outputText.text = string.Empty; - outputText.fontSizeMax = 4; - outputText.overflowMode = TextOverflowModes.Ellipsis; - outputText.alignment = TextAlignmentOptions.Left; - outputText.horizontalAlignment = HorizontalAlignmentOptions.Left; - outputText.rectTransform.offsetMax = new Vector2(-0.1531f, 0.2972f); - outputText.rectTransform.sizeDelta = new Vector2(3, 1); - outputText.transform.localPosition = new Vector3(0, 0.0343f, -0.2f); var placeholderText = _searchBoxTmp.placeholderText; if (placeholderText) { + placeholderText.transform.SetParent(textParent, false); placeholderText.GetComponent()?.Destroy(); - placeholderText.font = tmpText.font; - placeholderText.fontSharedMaterial = tmpText.fontSharedMaterial; + CopyTextLayout(tmpText, placeholderText); placeholderText.color = new Color(0.55f, 0.55f, 0.55f); placeholderText.text = MiraLocaleManager.Get("MiraApi.Wiki.SearchPlaceholder"); - placeholderText.fontSizeMax = 4; - placeholderText.overflowMode = TextOverflowModes.Ellipsis; - placeholderText.alignment = TextAlignmentOptions.Left; - placeholderText.horizontalAlignment = HorizontalAlignmentOptions.Left; - placeholderText.rectTransform.offsetMax = new Vector2(-0.1531f, 0.2972f); - placeholderText.rectTransform.sizeDelta = new Vector2(3, 1); - placeholderText.transform.localPosition = new Vector3(0, 0.0343f, -0.2f); placeholderText.gameObject.SetActive(true); } + if (_searchBoxTmp.Pipe) + { + _searchBoxTmp.Pipe.transform.SetParent(textParent, false); + _searchBoxTmp.Pipe.transform.localPosition = new Vector3( + outputText.transform.localPosition.x - + (outputText.rectTransform.sizeDelta.x * outputText.rectTransform.pivot.x), + outputText.transform.localPosition.y + _searchBoxTmp.caretYOffset, + -0.3f); + } + tmpText.gameObject.Destroy(); button.OnClick.AddListener((UnityAction)(() => { _searchBoxTmp.GiveFocus(); })); @@ -656,6 +662,32 @@ public static class RoleGuidePatches RefreshActiveTab(false); } + private static void CopyTextLayout(TextMeshPro source, TextMeshPro target) + { + target.font = source.font; + target.fontSharedMaterial = source.fontSharedMaterial; + target.fontSize = source.fontSize; + target.fontSizeMin = source.fontSizeMin; + target.fontSizeMax = source.fontSizeMax; + target.enableAutoSizing = source.enableAutoSizing; + target.overflowMode = source.overflowMode; + target.alignment = source.alignment; + target.horizontalAlignment = source.horizontalAlignment; + target.verticalAlignment = source.verticalAlignment; + target.margin = source.margin; + target.enableWordWrapping = source.enableWordWrapping; + var sourceRect = source.rectTransform; + var targetRect = target.rectTransform; + targetRect.anchorMin = sourceRect.anchorMin; + targetRect.anchorMax = sourceRect.anchorMax; + targetRect.pivot = sourceRect.pivot; + targetRect.sizeDelta = sourceRect.sizeDelta; + targetRect.anchoredPosition = sourceRect.anchoredPosition; + targetRect.localScale = sourceRect.localScale; + targetRect.localRotation = sourceRect.localRotation; + targetRect.localPosition = sourceRect.localPosition; + } + private static void SetupPanelButton(MatchInfoRolePanel panel, Action onClick) { var collider = panel.roleIcon.gameObject.AddComponent();