Hotfix for survival mode pagination

This commit is contained in:
Nanami-Houko 2025-07-03 10:47:03 +08:00 • committed by GitHub
parent 449b9db9f0
commit 2eeaf52d6d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,6 +2,8 @@
using Il2Cpp; using Il2Cpp;
using Il2CppTMPro; using Il2CppTMPro;
using PvZ_Fusion_Translator.AssetStore; using PvZ_Fusion_Translator.AssetStore;
using UnityEngine;
using UnityEngine.UI;
namespace PvZ_Fusion_Translator.Patches.GameObjects namespace PvZ_Fusion_Translator.Patches.GameObjects
{ {
@ -10,31 +12,60 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects
{ {
[HarmonyPatch(nameof(UIButton.Start))] [HarmonyPatch(nameof(UIButton.Start))]
[HarmonyPostfix] [HarmonyPostfix]
public static void Start(UIButton __instance) private static void Postfix_Start(UIButton __instance)
{ {
try try
{
// Convert and translate legacy Text components
Text[] textComponents = __instance.GetComponentsInChildren<Text>(true);
foreach (Text textComponent in textComponents)
{
if (textComponent != null && !string.IsNullOrEmpty(textComponent.text))
{
string translatedText = StringStore.TranslateText(textComponent.text);
if (!string.IsNullOrEmpty(translatedText) && translatedText != textComponent.text)
{
TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString());
TextMeshProUGUI newTMP = StringStore.ConvertToTextMeshPro(textComponent, fontAsset, true);
if (newTMP != null)
{
newTMP.text = translatedText;
}
}
}
}
// Also handle TMP components directly under the button
if (__instance.transform.childCount >= 2)
{ {
TextMeshProUGUI text = __instance.transform.GetChild(0).GetComponent<TextMeshProUGUI>(); TextMeshProUGUI text = __instance.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
TextMeshProUGUI textShadow = __instance.transform.GetChild(1).GetComponent<TextMeshProUGUI>(); TextMeshProUGUI textShadow = __instance.transform.GetChild(1).GetComponent<TextMeshProUGUI>();
StringStore.TranslateTextUI(text, false); StringStore.TranslateTextUI(text, false);
StringStore.TranslateTextUI(textShadow, false); StringStore.TranslateTextUI(textShadow, false);
text.autoSizeTextContainer = textShadow.autoSizeTextContainer = true; text.autoSizeTextContainer = textShadow.autoSizeTextContainer = true;
} }
}
catch (Exception) { } catch (Exception) { }
} }
[HarmonyPatch(nameof(UIButton.OnMouseUpAsButton))] [HarmonyPatch(nameof(UIButton.OnMouseUpAsButton))]
[HarmonyPostfix] [HarmonyPostfix]
public static void OnMouseUpAsButton(UIButton __instance) public static void Postfix_OnMouseUpAsButton(UIButton __instance)
{ {
try try
{
if (__instance.transform.childCount >= 2)
{ {
TextMeshProUGUI text = __instance.transform.GetChild(0).GetComponent<TextMeshProUGUI>(); TextMeshProUGUI text = __instance.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
TextMeshProUGUI textShadow = __instance.transform.GetChild(1).GetComponent<TextMeshProUGUI>(); TextMeshProUGUI textShadow = __instance.transform.GetChild(1).GetComponent<TextMeshProUGUI>();
StringStore.TranslateTextUI(text, false); StringStore.TranslateTextUI(text, false);
StringStore.TranslateTextUI(textShadow, false); StringStore.TranslateTextUI(textShadow, false);
text.autoSizeTextContainer = textShadow.autoSizeTextContainer = true; text.autoSizeTextContainer = textShadow.autoSizeTextContainer = true;
} }
}
catch (Exception) { } catch (Exception) { }
} }
} }