translation bug fixes with abyss and ui button
This commit is contained in:
parent
a4d3ed0e90
commit
bedcddb72f
4 changed files with 120 additions and 0 deletions
|
|
@ -53,6 +53,7 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects
|
|||
}
|
||||
|
||||
txt.text = string.Format(StringStore.translationStringRegex[regexStr], [.. dynamicParts]);
|
||||
MelonLogger.Msg(txt.text);
|
||||
txt.font = fontAsset;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
64
MelonLoader/Patches/GameObjects/AbyssSettlementMenu_Patch.cs
Normal file
64
MelonLoader/Patches/GameObjects/AbyssSettlementMenu_Patch.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
using HarmonyLib;
|
||||
using Il2Cpp;
|
||||
using Il2CppTMPro;
|
||||
using MelonLoader;
|
||||
using PvZ_Fusion_Translator.AssetStore;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace PvZ_Fusion_Translator.Patches.GameObjects
|
||||
{
|
||||
[HarmonyPatch(typeof(AbyssSettlementMenu))]
|
||||
public static class AbyssSettlementMenu_Patch
|
||||
{
|
||||
|
||||
[HarmonyPatch(nameof(AbyssSettlementMenu.InitSettle))]
|
||||
[HarmonyPostfix]
|
||||
private static void InitSettle(AbyssSettlementMenu __instance)
|
||||
{
|
||||
TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString());
|
||||
|
||||
string regexStr1 = "第(\\d+)关\n通关用时:(\\d+)分(\\d+)秒\n杀敌数量:(\\d+)\n关卡叶绿素产出:(\\d+)\n极限模式产出:(\\d+)\n非首胜无额外产出\n产出叶绿素总计:(\\d+)\n";
|
||||
string regexStr2 = "第(\\d+)关\n通关用时:(\\d+)分(\\d+)秒\n杀敌数量:(\\d+)\n关卡叶绿素产出:(\\d+)\n极限模式产出:(\\d+)\n首胜产出:(\\d+)\n剩余小推车数量:(\\d+),获得叶绿素:(\\d+)\n产出叶绿素总计:(\\d+)";
|
||||
|
||||
Regex regex1 = new Regex(regexStr1);
|
||||
Regex regex2 = new Regex(regexStr2);
|
||||
|
||||
if (regex1.IsMatch(__instance.settleInfo.text))
|
||||
{
|
||||
Match match = regex1.Match(__instance.settleInfo.text);
|
||||
int groupCount = match.Groups.Count;
|
||||
|
||||
List<string> dynamicParts = [];
|
||||
|
||||
for (int i = 1; i < groupCount; i++)
|
||||
{
|
||||
string groupValue = match.Groups[i].Value;
|
||||
string translatedValue = StringStore.translationString.ContainsKey(groupValue) ? StringStore.translationString[groupValue] : groupValue;
|
||||
dynamicParts.Add(translatedValue);
|
||||
}
|
||||
|
||||
__instance.settleInfo.text = string.Format(StringStore.translationStringRegex[regexStr1], [.. dynamicParts]);
|
||||
__instance.settleInfo.font = fontAsset;
|
||||
}
|
||||
else if (regex2.IsMatch(__instance.settleInfo.text))
|
||||
{
|
||||
Match match = regex2.Match(__instance.settleInfo.text);
|
||||
int groupCount = match.Groups.Count;
|
||||
|
||||
List<string> dynamicParts = [];
|
||||
|
||||
for (int i = 1; i < groupCount; i++)
|
||||
{
|
||||
string groupValue = match.Groups[i].Value;
|
||||
string translatedValue = StringStore.translationString.ContainsKey(groupValue) ? StringStore.translationString[groupValue] : groupValue;
|
||||
dynamicParts.Add(translatedValue);
|
||||
}
|
||||
|
||||
__instance.settleInfo.text = string.Format(StringStore.translationStringRegex[regexStr2], [.. dynamicParts]);
|
||||
__instance.settleInfo.font = fontAsset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
using HarmonyLib;
|
||||
using Il2Cpp;
|
||||
using Il2CppTMPro;
|
||||
using PvZ_Fusion_Translator.AssetStore;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace PvZ_Fusion_Translator.Patches.GameObjects.ButtonObjects
|
||||
{
|
||||
[HarmonyPatch(typeof(UIButton))]
|
||||
public static class UIButton_Patch
|
||||
{
|
||||
[HarmonyPatch(nameof(UIButton.Start))]
|
||||
[HarmonyPostfix]
|
||||
private static void Start(UIButton __instance)
|
||||
{
|
||||
Transform txtTransform = __instance.transform.FindChild("text");
|
||||
string fontPath = "";
|
||||
TMP_FontAsset fontAsset = null;
|
||||
|
||||
if(txtTransform != null)
|
||||
{
|
||||
string fontsDir = Path.Combine(Core.Instance.modsDirectory, "[Custom Fonts]");
|
||||
|
||||
foreach (string file in Directory.GetFiles(fontsDir))
|
||||
{
|
||||
string fileName = Path.GetFileNameWithoutExtension(file);
|
||||
string fileExtension = Path.GetExtension(file);
|
||||
|
||||
if (fileExtension == ".ttf" || fileExtension == ".otf")
|
||||
{
|
||||
if (!fileName.EndsWith("_Almanac") && !fileName.EndsWith("_Fallback"))
|
||||
{
|
||||
fontPath = Path.Combine("PvZ_Fusion_Translator", "[Custom Fonts]", fileName + fileExtension);
|
||||
|
||||
fontAsset = FontHandler.LoadTMPFont(fontPath, true);
|
||||
fontAsset.name = fileName;
|
||||
fontAssetDict.Add(fileName, fontAsset);
|
||||
|
||||
Log.LogInfo($"Font for language '{fileName}' loaded");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
string fontPath = Path.Combine("PvZ_Fusion_Translator", "[Custom Fonts]", fileName + fileExtension);
|
||||
Font fontAsset = FontHandler.LoadFont(fontPath, false);
|
||||
|
||||
txtTransform.GetComponent<Text>().text = StringStore.TranslateText(txtTransform.GetComponent<Text>().text);
|
||||
txtTransform.GetComponent<Text>().font = fontAsset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -448,10 +448,12 @@
|
|||
<Compile Include="Log.cs" />
|
||||
<Compile Include="ModFeatures.cs" />
|
||||
<Compile Include="AssetStore\AudioStore.cs" />
|
||||
<Compile Include="Patches\GameObjects\AbyssSettlementMenu_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\ButtonObjects\AbyssCheckSellMenu_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\ButtonObjects\AbyssBuffButton_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\ButtonObjects\AbyssLevelEnter_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\ButtonObjects\BaseMenu_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\ButtonObjects\UIButton_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\ButtonObjects\SaveMenuBtn_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\MainMenu_Patch.cs" />
|
||||
<Compile Include="Patches\GameObjects\MinorObjects\AbyssGoods_Patch.cs" />
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue