110 lines
4.6 KiB
C#
110 lines
4.6 KiB
C#
using HarmonyLib;
|
||
using Il2Cpp;
|
||
using Il2CppTMPro;
|
||
using PvZ_Fusion_Translator;
|
||
using PvZ_Fusion_Translator.AssetStore;
|
||
using System.Text.RegularExpressions;
|
||
using Unity.Collections;
|
||
|
||
namespace PvZ_Fusion_Translator.Patches.Managers
|
||
{
|
||
[HarmonyPatch(typeof(InGameUI))]
|
||
public static class InGameUI_Patch
|
||
{
|
||
[HarmonyPatch(nameof(InGameUI.Start))]
|
||
[HarmonyPostfix]
|
||
private static void Start(InGameUI __instance)
|
||
{
|
||
foreach(TextMeshProUGUI text in __instance.T)
|
||
{
|
||
if (text.text == null) continue;
|
||
|
||
string originalText = text.text;
|
||
text.text = text.text.Replace("\n", " ");
|
||
Regex checkFusionChallenge = new Regex("^超级([^\\s:]+)(:?挑战1?)");
|
||
|
||
if (text.text.Contains("配方:") && !checkFusionChallenge.IsMatch(text.text))
|
||
{
|
||
string[] lines = text.text.Split(":");
|
||
lines[1] = Utils.GetPlantNameFromAlmanac(lines[1]);
|
||
if (lines[1] == "")
|
||
{
|
||
Log.LogError("Couldn't find plant! (Fusion Showcase)");
|
||
lines[1] = StringStore.TranslateText(lines[1]);
|
||
}
|
||
text.text = StringStore.TranslateText("配方:") + lines[1];
|
||
text.autoSizeTextContainer = true;
|
||
}
|
||
else
|
||
{
|
||
text.text = (StringStore.translationString.ContainsKey(text.text + "_MG")) ? StringStore.TranslateText(text.text + "_MG") : StringStore.TranslateText(text.text);
|
||
text.text = text.text.Replace("\n", " ");
|
||
}
|
||
}
|
||
}
|
||
|
||
[HarmonyPatch(nameof(InGameUI.SetUniqueText))]
|
||
[HarmonyPostfix]
|
||
private static void SetUniqueText(InGameUI __instance)
|
||
{
|
||
foreach(TextMeshProUGUI text in __instance.T)
|
||
{
|
||
if (text.text == null) continue;
|
||
|
||
string originalText = text.text;
|
||
text.text = text.text.Replace("\n", " ");
|
||
Regex checkFusionChallenge = new Regex("^超级([^\\s:]+)(:?挑战1?)");
|
||
|
||
if (text.text.Contains("配方:") && !checkFusionChallenge.IsMatch(text.text))
|
||
{
|
||
string[] lines = text.text.Split(":");
|
||
lines[1] = Utils.GetPlantNameFromAlmanac(lines[1]);
|
||
if (lines[1] == "")
|
||
{
|
||
Log.LogError("Couldn't find plant! (Fusion Showcase)");
|
||
lines[1] = StringStore.TranslateText(lines[1]);
|
||
}
|
||
text.text = StringStore.TranslateText("配方:") + lines[1];
|
||
text.autoSizeTextContainer = true;
|
||
}
|
||
else
|
||
{
|
||
text.text = (StringStore.translationString.ContainsKey(text.text + "_MG")) ? StringStore.TranslateText(text.text + "_MG") : StringStore.TranslateText(text.text);
|
||
text.text = text.text.Replace("\n", " ");
|
||
}
|
||
}
|
||
}
|
||
|
||
[HarmonyPatch(nameof(InGameUI.SetLevelName))]
|
||
[HarmonyPostfix]
|
||
private static void SetLevelName(InGameUI __instance)
|
||
{
|
||
foreach(TextMeshProUGUI text in __instance.T)
|
||
{
|
||
if (text.text == null) continue;
|
||
|
||
string originalText = text.text;
|
||
text.text = text.text.Replace("\n", " ");
|
||
Regex checkFusionChallenge = new Regex("^超级([^\\s:]+)(:?挑战1?)");
|
||
|
||
if (text.text.Contains("配方:") && !checkFusionChallenge.IsMatch(text.text))
|
||
{
|
||
string[] lines = text.text.Split(":");
|
||
lines[1] = Utils.GetPlantNameFromAlmanac(lines[1]);
|
||
if (lines[1] == "")
|
||
{
|
||
Log.LogError("Couldn't find plant! (Fusion Showcase)");
|
||
lines[1] = StringStore.TranslateText(lines[1]);
|
||
}
|
||
text.text = StringStore.TranslateText("配方:") + lines[1];
|
||
text.autoSizeTextContainer = true;
|
||
}
|
||
else
|
||
{
|
||
text.text = (StringStore.translationString.ContainsKey(text.text + "_MG")) ? StringStore.TranslateText(text.text + "_MG") : StringStore.TranslateText(text.text);
|
||
text.text = text.text.Replace("\n", " ");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|