Merge branch 'cassidy'

This commit is contained in:
SillyStar-Github 2025-10-20 16:29:22 -04:00
commit 982ddf3c84
6 changed files with 98 additions and 36 deletions

View file

@ -147,11 +147,11 @@ namespace PvZ_Fusion_Translator__BepInEx_.AssetStore
// Regex-based dynamic translation // Regex-based dynamic translation
foreach (var entry in translationStringRegex) foreach (var entry in translationStringRegex)
{ {
var regex = new Regex(entry.Key); if (TestRegex(originalText, entry.Key))
if (regex.IsMatch(originalText))
{ {
// Extract dynamic parts from the original text // Extract dynamic parts from the original text
var match = regex.Match(originalText); var regex = new Regex(entry.Key);
var match = regex.Match(originalText);
int groupCount = match.Groups.Count; int groupCount = match.Groups.Count;
if (isLog) if (isLog)
@ -180,7 +180,12 @@ namespace PvZ_Fusion_Translator__BepInEx_.AssetStore
return originalText; return originalText;
} }
private static TextAlignmentOptions TextAnchorToTMPAlignment(TextAnchor anchor) private static bool TestRegex(string originalText, string pattern)
{
return Regex.IsMatch(originalText, pattern);
}
private static TextAlignmentOptions TextAnchorToTMPAlignment(TextAnchor anchor)
{ {
return anchor switch return anchor switch
{ {

View file

@ -47,5 +47,31 @@ namespace PvZ_Fusion_Translator__BepInEx_.Patches.Managers
} }
} }
} }
[HarmonyPatch(nameof(InGameUI.Update))]
[HarmonyPostfix]
private static void Update(InGameUI __instance)
{
foreach(TextMeshProUGUI txt in __instance.ShovelBank.GetComponentsInChildren<TextMeshProUGUI>())
{
txt.text = StringStore.TranslateText(txt.text);
txt.font = FontStore.LoadTMPFont(Utils.Language.ToString());
}
}
}
[HarmonyPatch(typeof(InGameUI_IZ))]
public static class InGameUI_IZ_Patch
{
[HarmonyPatch(nameof(InGameUI_IZ.Update))]
[HarmonyPostfix]
private static void Update(InGameUI_IZ __instance)
{
foreach (TextMeshProUGUI txt in __instance.shovel.GetComponentsInChildren<TextMeshProUGUI>())
{
txt.text = StringStore.TranslateText(txt.text);
txt.font = FontStore.LoadTMPFont(Utils.Language.ToString());
}
}
} }
} }

View file

@ -402,7 +402,7 @@ namespace PvZ_Fusion_Translator__BepInEx_
// Ukrainian, // Ukrainian,
// Slovak, // Slovak,
Polish, Polish,
Hungarian, Turkish,
Arabic, Arabic,
LANG_END LANG_END

View file

@ -145,10 +145,10 @@ namespace PvZ_Fusion_Translator.AssetStore
// Regex-based dynamic translation // Regex-based dynamic translation
foreach (var entry in translationStringRegex) foreach (var entry in translationStringRegex)
{ {
var regex = new Regex(entry.Key); if (TestRegex(originalText, entry.Key))
if (regex.IsMatch(originalText))
{ {
// Extract dynamic parts from the original text // Extract dynamic parts from the original text
var regex = new Regex(entry.Key);
var match = regex.Match(originalText); var match = regex.Match(originalText);
int groupCount = match.Groups.Count; int groupCount = match.Groups.Count;
@ -178,6 +178,11 @@ namespace PvZ_Fusion_Translator.AssetStore
return originalText; return originalText;
} }
private static bool TestRegex(string originalText, string pattern)
{
return Regex.IsMatch(originalText, pattern);
}
private static TextAlignmentOptions TextAnchorToTMPAlignment(TextAnchor anchor) private static TextAlignmentOptions TextAnchorToTMPAlignment(TextAnchor anchor)
{ {
return anchor switch return anchor switch

View file

@ -8,45 +8,71 @@ using Unity.Collections;
namespace PvZ_Fusion_Translator.Patches.Managers namespace PvZ_Fusion_Translator.Patches.Managers
{ {
[HarmonyPatch(typeof(InGameUI))] [HarmonyPatch(typeof(InGameUI))]
public static class InGameUI_Patch public static class InGameUI_Patch
{ {
[HarmonyPatch(nameof(InGameUI.Start))] [HarmonyPatch(nameof(InGameUI.Start))]
[HarmonyPostfix] [HarmonyPostfix]
private static void Start(InGameUI __instance) private static void Start(InGameUI __instance)
{ {
TextMeshProUGUI[] array = new TextMeshProUGUI[] TextMeshProUGUI[] array = new TextMeshProUGUI[]
{ {
__instance.transform.GetChild(4).GetComponent<TextMeshProUGUI>(), __instance.transform.GetChild(4).GetComponent<TextMeshProUGUI>(),
__instance.transform.GetChild(4).GetChild(0).GetComponent<TextMeshProUGUI>(), __instance.transform.GetChild(4).GetChild(0).GetComponent<TextMeshProUGUI>(),
__instance.transform.GetChild(5).GetComponent<TextMeshProUGUI>(), __instance.transform.GetChild(5).GetComponent<TextMeshProUGUI>(),
__instance.transform.GetChild(5).GetChild(0).GetComponent<TextMeshProUGUI>(), __instance.transform.GetChild(5).GetChild(0).GetComponent<TextMeshProUGUI>(),
__instance.transform.GetChild(6).GetComponent<TextMeshProUGUI>(), __instance.transform.GetChild(6).GetComponent<TextMeshProUGUI>(),
__instance.transform.GetChild(6).GetChild(0).GetComponent<TextMeshProUGUI>()}; __instance.transform.GetChild(6).GetChild(0).GetComponent<TextMeshProUGUI>()};
TextMeshProUGUI[] array2 = array; TextMeshProUGUI[] array2 = array;
for (int i = 0; i < array2.Length; i++) for (int i = 0; i < array2.Length; i++)
{ {
array2[i].text = array2[i].text.Replace("\n", " "); array2[i].text = array2[i].text.Replace("\n", " ");
Regex checkFusionChallenge = new Regex("^超级([^\\s:]+)(:?挑战1?)"); Regex checkFusionChallenge = new Regex("^超级([^\\s:]+)(:?挑战1?)");
if (array2[i].text.Contains("配方:") && !checkFusionChallenge.IsMatch(array2[i].text)) if (array2[i].text.Contains("配方:") && !checkFusionChallenge.IsMatch(array2[i].text))
{ {
string[] lines = array2[i].text.Split(":"); string[] lines = array2[i].text.Split(":");
lines[1] = Utils.GetPlantNameFromAlmanac(lines[1]); lines[1] = Utils.GetPlantNameFromAlmanac(lines[1]);
if (lines[1] == "") if (lines[1] == "")
{ {
Log.LogError("Couldn't find plant! (Fusion Showcase)"); Log.LogError("Couldn't find plant! (Fusion Showcase)");
lines[1] = StringStore.TranslateText(lines[1]); lines[1] = StringStore.TranslateText(lines[1]);
} }
array2[i].text = StringStore.TranslateText("配方:") + lines[1]; array2[i].text = StringStore.TranslateText("配方:") + lines[1];
array2[i].autoSizeTextContainer = true; array2[i].autoSizeTextContainer = true;
} }
else else
{ {
array2[i] = StringStore.TranslateText(array2[i]); array2[i] = StringStore.TranslateText(array2[i]);
array2[i].text = array2[i].text.Replace("\n", " "); array2[i].text = array2[i].text.Replace("\n", " ");
} }
} }
} }
}
[HarmonyPatch(nameof(InGameUI.Update))]
[HarmonyPostfix]
private static void Update(InGameUI __instance)
{
foreach (TextMeshProUGUI txt in __instance.ShovelBank.GetComponentsInChildren<TextMeshProUGUI>())
{
txt.text = StringStore.TranslateText(txt.text);
txt.font = FontStore.LoadTMPFont(Utils.Language.ToString());
}
}
}
[HarmonyPatch(typeof(InGameUI_IZ))]
public static class InGameUI_IZ_Patch
{
[HarmonyPatch(nameof(InGameUI_IZ.Update))]
[HarmonyPostfix]
private static void Update(InGameUI_IZ __instance)
{
foreach (TextMeshProUGUI txt in __instance.shovel.GetComponentsInChildren<TextMeshProUGUI>())
{
txt.text = StringStore.TranslateText(txt.text);
txt.font = FontStore.LoadTMPFont(Utils.Language.ToString());
}
}
}
} }

View file

@ -351,7 +351,7 @@ namespace PvZ_Fusion_Translator
// Ukrainian, // Ukrainian,
// Slovak, // Slovak,
Polish, Polish,
Hungarian, Turkish,
Arabic, Arabic,
LANG_END LANG_END