From 85dfdbb28b4900a49ff0681b3ed7f5a39f83f193 Mon Sep 17 00:00:00 2001 From: SillyStar-Github <90102598+SillyStar-Github@users.noreply.github.com> Date: Sat, 19 Apr 2025 13:36:51 -0400 Subject: [PATCH] my code --- MelonLoader/AssetStore/WarningStore.cs | 64 ++- .../GameObjects/AbyssDevelopMenu_Patch.cs | 19 + .../Patches/GameObjects/AbyssMenu2_Patch.cs | 81 +++ .../Patches/GameObjects/AbyssMenu_Patch.cs | 41 ++ .../ButtonObjects/AbyssButton_Patch.cs | 34 +- .../ButtonObjects/AbyssLevelEnter_Patch.cs | 19 + .../Patches/GameObjects/MainMenu_Patch.cs | 20 + .../MinorObjects/AbyssGoods_Patch.cs | 22 + .../GameObjects/NoticePauseMenu_Patch.cs | 4 +- .../TravelBuffOptionButton_Patch.cs | 44 ++ .../GameObjects/TravelRefresh_Patch.cs | 113 ++-- .../Patches/Managers/SaveMenu_Patch.cs | 5 + .../Patches/Managers/TravelMenuMgr_Patch.cs | 86 +-- MelonLoader/Patches/Managers/UIMgr_Patch.cs | 22 +- ...PvZ Fusion Translator [MelonLoader].csproj | 518 ++++++++++++++++++ PvZ Fusion Translator.sln | 50 -- 16 files changed, 963 insertions(+), 179 deletions(-) create mode 100644 MelonLoader/Patches/GameObjects/AbyssDevelopMenu_Patch.cs create mode 100644 MelonLoader/Patches/GameObjects/AbyssMenu2_Patch.cs create mode 100644 MelonLoader/Patches/GameObjects/AbyssMenu_Patch.cs create mode 100644 MelonLoader/Patches/GameObjects/ButtonObjects/AbyssLevelEnter_Patch.cs create mode 100644 MelonLoader/Patches/GameObjects/MainMenu_Patch.cs create mode 100644 MelonLoader/Patches/GameObjects/MinorObjects/AbyssGoods_Patch.cs create mode 100644 MelonLoader/Patches/GameObjects/TravelBuffOptionButton_Patch.cs create mode 100644 MelonLoader/PvZ Fusion Translator [MelonLoader].csproj diff --git a/MelonLoader/AssetStore/WarningStore.cs b/MelonLoader/AssetStore/WarningStore.cs index 194268f..596c2e8 100644 --- a/MelonLoader/AssetStore/WarningStore.cs +++ b/MelonLoader/AssetStore/WarningStore.cs @@ -1,6 +1,10 @@ -using Il2Cpp; +using System.Runtime.CompilerServices; +using Il2Cpp; using Il2CppTMPro; +using MelonLoader; using UnityEngine; +using UnityEngine.TextCore.Text; +using static MelonLoader.MelonLogger; namespace PvZ_Fusion_Translator.AssetStore { @@ -114,39 +118,55 @@ namespace PvZ_Fusion_Translator.AssetStore } #endif - public static void WarningLoad() + public static void WarningLoad(NoticeMenu noticeMenu) { - GameAPP.theGameStatus = -2; - GameObject gameObject = UnityEngine.Object.Instantiate(Resources.Load("UI/MainMenu/NoticePauseMenu"), GameAPP.canvas.transform); - gameObject.name = "WarningMessage"; - TextMeshProUGUI warning = gameObject.transform.GetChild(0).GetChild(0).GetComponent(); - TextMeshProUGUI warningShadow = gameObject.transform.GetChild(0).GetChild(1).GetComponent(); - Transform button = gameObject.transform.GetChild(1); - warning.transform.position = new Vector3(0.7f, 0.4f, 0f); - warningShadow.transform.position = new Vector3(0.7f, 0.4f, 0f); + //GameAPP.theGameStatus = GameStatus.OpenOptions; + //GameObject gameObject = UnityEngine.Object.Instantiate(Resources.Load("UI/Prefabs/NoticePauseMenu"), GameAPP.canvas.transform); + //gameObject.name = "WarningMessage"; + //TextMeshProUGUI warning = gameObject.transform.GetChild(0).GetChild(0).GetComponent(); + //TextMeshProUGUI warningShadow = gameObject.transform.GetChild(0).GetChild(1).GetComponent(); + //Transform button = gameObject.transform.GetChild(1); + //warning.transform.position = new Vector3(0.7f, 0.4f, 0f); + //warningShadow.transform.position = new Vector3(0.7f, 0.4f, 0f); #if MULTI_LANGUAGE var (warningMessage, okayButton) = WarningStore.GetWarningMessage(Utils.Language); + + TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString()); + Transform warningTransform = noticeMenu.transform.FindChild("窗口"); + Transform warningTextTransform = warningTransform.FindChild("文字"); + Transform warningTextShadowTransform = warningTransform.FindChild("文字2"); + + Transform[] array = [warningTextTransform, warningTextShadowTransform]; + + for (int i = 0; i < array.Length; i++) + { + if (array[i] != null) + { + array[i].GetComponent().text = warningMessage; + array[i].GetComponent().font = fontAsset; + } + } #endif - warning.text = warningMessage; - warningShadow.text = warningMessage; - warning.font = FontStore.LoadTMPFont(Utils.Language.ToString()); - warningShadow.font = FontStore.LoadTMPFont(Utils.Language.ToString()); + //warning.text = warningMessage; + //warningShadow.text = warningMessage; + //warning.font = FontStore.LoadTMPFont(Utils.Language.ToString()); + //warningShadow.font = FontStore.LoadTMPFont(Utils.Language.ToString()); - button.GetComponent().buttonNumber = 10; - button.GetChild(0).GetComponent().text = okayButton; - button.GetChild(0).GetComponent().font = FontStore.LoadTMPFont(Utils.Language.ToString()); - button.GetChild(1).GetComponent().text = okayButton; - gameObject.SetActive(false); - gameObject.SetActive(true); + //button.GetComponent().buttonNumber = 10; + //button.GetChild(0).GetComponent().text = okayButton; + //button.GetChild(0).GetComponent().font = FontStore.LoadTMPFont(Utils.Language.ToString()); + //button.GetChild(1).GetComponent().text = okayButton; + //gameObject.SetActive(false); + //gameObject.SetActive(true); } #if MULTI_LANGUAGE public static bool isWarningMessageLoaded = false; - public static void WarningReload(Utils.LanguageEnum language) + public static void WarningReload(Utils.LanguageEnum language, NoticeMenu noticeMenu) { // Log.LogInfo("Current Language is " + Utils.OldLanguage); // Log.LogInfo("Changed Language to " + language); @@ -157,7 +177,7 @@ namespace PvZ_Fusion_Translator.AssetStore } if (!isWarningMessageLoaded) { - WarningLoad(); + WarningLoad(noticeMenu); isWarningMessageLoaded = true; } diff --git a/MelonLoader/Patches/GameObjects/AbyssDevelopMenu_Patch.cs b/MelonLoader/Patches/GameObjects/AbyssDevelopMenu_Patch.cs new file mode 100644 index 0000000..5644722 --- /dev/null +++ b/MelonLoader/Patches/GameObjects/AbyssDevelopMenu_Patch.cs @@ -0,0 +1,19 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using PvZ_Fusion_Translator.AssetStore; + +namespace PvZ_Fusion_Translator.Patches.GameObjects +{ + [HarmonyPatch(typeof(AbyssDevelopMenu))] + public static class AbyssDevelopMenu_Patch + { + [HarmonyPatch(nameof(AbyssDevelopMenu.UpdateInfo))] + [HarmonyPostfix] + private static void UpdateInfo(AbyssDevelopMenu __instance) + { + __instance.currentMoney.text = StringStore.TranslateText(__instance.currentMoney.text); + __instance.upgradeTextInfo.text = StringStore.TranslateText(__instance.upgradeTextInfo.text); + } + } +} diff --git a/MelonLoader/Patches/GameObjects/AbyssMenu2_Patch.cs b/MelonLoader/Patches/GameObjects/AbyssMenu2_Patch.cs new file mode 100644 index 0000000..775e6d8 --- /dev/null +++ b/MelonLoader/Patches/GameObjects/AbyssMenu2_Patch.cs @@ -0,0 +1,81 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using MelonLoader; +using PvZ_Fusion_Translator.AssetStore; +using UnityEngine; + +namespace PvZ_Fusion_Translator.Patches.GameObjects +{ + + [HarmonyPatch(typeof(AbyssMenu2))] + public static class AbyssMenu2_Patch + { + private static void UpdateAbyss2Text(AbyssMenu2 __instance) + { + TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString()); + + __instance.buffCountText.text = StringStore.TranslateText(__instance.buffCountText.text); + __instance.buffCountText.font = fontAsset; + + __instance.money.text = StringStore.TranslateText(__instance.money.text); + __instance.money.font = fontAsset; + + __instance.refreshText.text = StringStore.TranslateText(__instance.refreshText.text); + __instance.refreshText.font = fontAsset; + + __instance.statistics.text = StringStore.TranslateText(__instance.statistics.text); + __instance.statistics.font = fontAsset; + + Transform buffTextTransform = __instance.transform.FindChild("BuffText").transform; + if (buffTextTransform != null) StringStore.TranslateTextTransform(buffTextTransform); + + Transform moneyTransform = __instance.transform.FindChild("Money").transform; + if (moneyTransform != null) StringStore.TranslateTextTransform(moneyTransform); + + Transform buffCountTextTransform = __instance.transform.FindChild("BuffCountText").transform; + if (buffCountTextTransform != null) StringStore.TranslateTextTransform(buffCountTextTransform); + + Transform refreshTextTransform = __instance.transform.FindChild("RefreshText").transform; + if (refreshTextTransform != null) StringStore.TranslateTextTransform(refreshTextTransform); + + Transform optionsTransform = __instance.transform.FindChild("Options").transform; + foreach (AbyssBuffButton abyssBuffButton in optionsTransform.GetComponentsInChildren()) + { + foreach (TextMeshProUGUI textMesh in abyssBuffButton.GetComponentsInChildren()) + { + textMesh.text = StringStore.TranslateText(textMesh.text); + } + } + } + + [HarmonyPatch(nameof(AbyssMenu2.Start))] + [HarmonyPostfix] + private static void Start(AbyssMenu2 __instance) + { + UpdateAbyss2Text(__instance); + + } + + [HarmonyPatch(nameof(AbyssMenu2.UpdateIcons))] + [HarmonyPostfix] + private static void UpdateIcons(AbyssMenu2 __instance) + { + UpdateAbyss2Text(__instance); + } + + [HarmonyPatch(nameof(AbyssMenu2.UpdateBuff))] + [HarmonyPostfix] + private static void UpdateBuff(AbyssMenu2 __instance) + { + UpdateAbyss2Text(__instance); + } + + [HarmonyPatch(nameof(AbyssMenu2.BuyBuff))] + [HarmonyPostfix] + private static void BuyBuff(AbyssMenu2 __instance) + { + UpdateAbyss2Text(__instance); + } + } +} diff --git a/MelonLoader/Patches/GameObjects/AbyssMenu_Patch.cs b/MelonLoader/Patches/GameObjects/AbyssMenu_Patch.cs new file mode 100644 index 0000000..c771e11 --- /dev/null +++ b/MelonLoader/Patches/GameObjects/AbyssMenu_Patch.cs @@ -0,0 +1,41 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using MelonLoader; +using PvZ_Fusion_Translator.AssetStore; +using Unity.VisualScripting; +using UnityEngine; +using static MelonLoader.MelonLogger; + +namespace PvZ_Fusion_Translator.Patches.GameObjects +{ + [HarmonyPatch(typeof(AbyssMenu))] + public static class AbyssMenu_Patch + { + + [HarmonyPatch(nameof(AbyssMenu.Awake))] + [HarmonyPostfix] + private static void Awake(AbyssMenu __instance) + { + TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString()); + + foreach (TextMeshProUGUI txt in __instance.levelInfo) + { + txt.text = StringStore.TranslateText(txt.text, false); + txt.font = fontAsset; + } + } + + [HarmonyPatch(nameof(AbyssMenu.UpdateLevelInfo))] + [HarmonyPostfix] + private static void UpdateLevelInfo(AbyssMenu __instance) + { + TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString()); + + foreach (TextMeshProUGUI txt in __instance.levelInfo) + { + + } + } + } +} diff --git a/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssButton_Patch.cs b/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssButton_Patch.cs index 45ac577..cd558ff 100644 --- a/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssButton_Patch.cs +++ b/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssButton_Patch.cs @@ -6,21 +6,21 @@ using UnityEngine; namespace PvZ_Fusion_Translator.Patches.GameObjects.ButtonObjects { - [HarmonyPatch(typeof(AbyssButton))] - public static class AbyssButton_Patch - { - [HarmonyPatch(nameof(AbyssButton.Start))] - [HarmonyPostfix] - private static void Start(AbyssButton __instance) - { - StringStore.TranslateTextTransform(__instance.transform, true); - Transform parentTransform = __instance.transform.parent.transform; - if (__instance.name == "Goback") - { - Transform backgroundTransform = parentTransform.Find("Background"); - backgroundTransform.Find("Name").GetComponent().autoSizeTextContainer = true; - backgroundTransform.Find("Shadow").GetComponent().autoSizeTextContainer = true; - } - } - } + // [HarmonyPatch(typeof(AbyssBuffButton))] + // public static class AbyssButton_Patch + // { + // [HarmonyPatch(nameof(AbyssBuffButton.Start))] + // [HarmonyPostfix] + // private static void Start(AbyssBuffButton __instance) + // { + // StringStore.TranslateTextTransform(__instance.transform, true); + // Transform parentTransform = __instance.transform.parent.transform; + //if (__instance.name == "Goback") + //{ + // Transform backgroundTransform = parentTransform.Find("Background"); + // backgroundTransform.Find("Name").GetComponent().autoSizeTextContainer = true; + // backgroundTransform.Find("Shadow").GetComponent().autoSizeTextContainer = true; + //} + // } + // } } diff --git a/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssLevelEnter_Patch.cs b/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssLevelEnter_Patch.cs new file mode 100644 index 0000000..b754b8e --- /dev/null +++ b/MelonLoader/Patches/GameObjects/ButtonObjects/AbyssLevelEnter_Patch.cs @@ -0,0 +1,19 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using PvZ_Fusion_Translator.AssetStore; +using UnityEngine; + +namespace PvZ_Fusion_Translator.Patches.GameObjects.ButtonObjects +{ + [HarmonyPatch(typeof(AbyssLevelEnter))] + public static class AbyssLevelEnter_Patch + { + [HarmonyPatch(nameof(AbyssLevelEnter.SetLevel))] + [HarmonyPostfix] + private static void SetLevel(AbyssLevelEnter __instance) + { + __instance.levelName = StringStore.TranslateText(__instance.levelName); + } + } +} diff --git a/MelonLoader/Patches/GameObjects/MainMenu_Patch.cs b/MelonLoader/Patches/GameObjects/MainMenu_Patch.cs new file mode 100644 index 0000000..1d31822 --- /dev/null +++ b/MelonLoader/Patches/GameObjects/MainMenu_Patch.cs @@ -0,0 +1,20 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using PvZ_Fusion_Translator.AssetStore; +using UnityEngine; + +namespace PvZ_Fusion_Translator.Patches.GameObjects +{ + [HarmonyPatch(typeof(MainMenu))] + public class MainMenu_Patch + { + [HarmonyPostfix] + [HarmonyPatch(nameof(MainMenu.FixedUpdate))] + private static void FixedUpdate(MainMenu __instance) + { + NoticeMenu noticeMenu = NoticeMenu.Instance; + WarningStore.WarningReload(Utils.Language, noticeMenu); + } + } +} diff --git a/MelonLoader/Patches/GameObjects/MinorObjects/AbyssGoods_Patch.cs b/MelonLoader/Patches/GameObjects/MinorObjects/AbyssGoods_Patch.cs new file mode 100644 index 0000000..5735459 --- /dev/null +++ b/MelonLoader/Patches/GameObjects/MinorObjects/AbyssGoods_Patch.cs @@ -0,0 +1,22 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using PvZ_Fusion_Translator.AssetStore; +using UnityEngine; + +namespace PvZ_Fusion_Translator.Patches.GameObjects.MinorObjects +{ + [HarmonyPatch(typeof(AbyssGoods))] + public static class AbyssGoods_Patch + { + [HarmonyPostfix] + [HarmonyPatch(nameof(AbyssGoods.Start))] + private static void Start(AbyssGoods __instance) + { + __instance.costText.text = StringStore.TranslateText(__instance.costText.text, false); + __instance.costText_shadow.text = StringStore.TranslateText(__instance.costText_shadow.text, false); + __instance.hasText.text = StringStore.TranslateText(__instance.hasText.text, false); + __instance.hasText_shadow.text = StringStore.TranslateText(__instance.hasText_shadow.text, false); + } + } +} diff --git a/MelonLoader/Patches/GameObjects/NoticePauseMenu_Patch.cs b/MelonLoader/Patches/GameObjects/NoticePauseMenu_Patch.cs index 25af2b3..7ad1cb0 100644 --- a/MelonLoader/Patches/GameObjects/NoticePauseMenu_Patch.cs +++ b/MelonLoader/Patches/GameObjects/NoticePauseMenu_Patch.cs @@ -14,8 +14,8 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects private static void Start(NoticeMenu __instance) { TMP_FontAsset fontAsset = FontStore.LoadTMPFont(Utils.Language.ToString()); - Transform warningTransform = __instance.transform.GetChild(0); - Transform warningTextTransform = warningTransform.FindChild("文字"); + Transform warningTransform = __instance.transform.FindChild("窗口"); + Transform warningTextTransform = warningTransform.FindChild("文字"); Transform warningTextShadowTransform = warningTransform.FindChild("文字2"); Transform[] array = [warningTextTransform, warningTextShadowTransform]; diff --git a/MelonLoader/Patches/GameObjects/TravelBuffOptionButton_Patch.cs b/MelonLoader/Patches/GameObjects/TravelBuffOptionButton_Patch.cs new file mode 100644 index 0000000..4ddf387 --- /dev/null +++ b/MelonLoader/Patches/GameObjects/TravelBuffOptionButton_Patch.cs @@ -0,0 +1,44 @@ +using HarmonyLib; +using Il2Cpp; +using Il2CppTMPro; +using PvZ_Fusion_Translator.AssetStore; + +namespace PvZ_Fusion_Translator.Patches.GameObjects +{ + [HarmonyPatch(typeof(TravelBuffOptionButton))] + public static class TravelBuffOptionButton_Patch + { + [HarmonyPatch(nameof(TravelBuffOptionButton.SetBuff))] + [HarmonyPostfix] + private static void Start(TravelBuffOptionButton __instance) + { + __instance.introduce.text = StringStore.TranslateText(__instance.introduce.text); + } + //[HarmonyPatch(nameof(TravelMenuMgr.SetText))] + //[HarmonyPostfix] + //private static void SetText(TravelMenuMgr __instance) + //{ + // foreach(TextMeshProUGUI text in __instance.textMesh) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // foreach(TextMeshProUGUI text in __instance.textMeshShadow) + // { + // text.text = StringStore.TranslateText(text.text); + // } + //} + //[HarmonyPatch(nameof(TravelMenuMgr.SetRichText), [typeof(int), typeof(int), typeof(TextMeshProUGUI), typeof(string)])] + //[HarmonyPostfix] + //private static void SetRichText(TravelMenuMgr __instance) + //{ + // foreach(TextMeshProUGUI text in __instance.textMesh) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // foreach(TextMeshProUGUI text in __instance.textMeshShadow) + // { + // text.text = StringStore.TranslateText(text.text); + // } + //} + } +} diff --git a/MelonLoader/Patches/GameObjects/TravelRefresh_Patch.cs b/MelonLoader/Patches/GameObjects/TravelRefresh_Patch.cs index 20a2924..6f58f44 100644 --- a/MelonLoader/Patches/GameObjects/TravelRefresh_Patch.cs +++ b/MelonLoader/Patches/GameObjects/TravelRefresh_Patch.cs @@ -6,48 +6,93 @@ using UnityEngine; namespace PvZ_Fusion_Translator.Patches.GameObjects { - [HarmonyPatch(typeof(TravelRefresh))] + [HarmonyPatch(typeof(TravelRefresh))] public static class TravelRefresh_Patch { - [HarmonyPatch(nameof(TravelRefresh.Update))] + [HarmonyPatch(nameof(TravelRefresh.Start))] [HarmonyPostfix] - private static void Update(TravelRefresh __instance) + private static void Start(TravelRefresh __instance) { - TextMeshProUGUI pointsText = __instance.transform.GetChild(0).GetComponent(); - pointsText = StringStore.TranslateText(pointsText); - pointsText.autoSizeTextContainer = true; + __instance.text = StringStore.TranslateText(__instance.text); + __instance.text_shadow = StringStore.TranslateText(__instance.text_shadow); + + //TextMeshProUGUI pointsText = __instance.transform.GetChild(0).GetComponent(); + //pointsText = StringStore.TranslateText(pointsText); + //pointsText.autoSizeTextContainer = true; - Transform TravelMenuTransform = __instance.transform.parent.transform; + //Transform TravelMenuTransform = __instance.transform.parent.transform; - Transform refreshTransform = TravelMenuTransform.Find("Refresh2").transform.Find("bank"); - if (refreshTransform != null) - { - Transform text_1Transform = refreshTransform.Find("text_1"); - if (text_1Transform != null) - { - TextMeshProUGUI text_1 = text_1Transform.GetComponent(); - - if (text_1) - { - text_1 = StringStore.TranslateText(text_1); - text_1.autoSizeTextContainer = true; - } - } + //Transform refreshTransform = TravelMenuTransform.Find("Refresh2").transform.Find("bank"); + //if (refreshTransform != null) + //{ + // Transform text_1Transform = refreshTransform.Find("text_1"); + // if (text_1Transform != null) + // { + // TextMeshProUGUI text_1 = text_1Transform.GetComponent(); - Transform text_2Transform = refreshTransform.Find("text_2"); - if (text_2Transform != null) - { - TextMeshProUGUI text_2 = text_2Transform.GetComponent(); + // if (text_1) + // { + // text_1 = StringStore.TranslateText(text_1); + // text_1.autoSizeTextContainer = true; + // } + // } - if (text_2) - { - text_2 = StringStore.TranslateText(text_2); - text_2.autoSizeTextContainer = true; - } - } - } + // Transform text_2Transform = refreshTransform.Find("text_2"); + // if (text_2Transform != null) + // { + // TextMeshProUGUI text_2 = text_2Transform.GetComponent(); - } - } + // if (text_2) + // { + // text_2 = StringStore.TranslateText(text_2); + // text_2.autoSizeTextContainer = true; + // } + // } + //} + } + + [HarmonyPatch(nameof(TravelRefresh.OnMouseUpAsButton))] + [HarmonyPostfix] + private static void OnMouseUpAsButton(TravelRefresh __instance) + { + __instance.text = StringStore.TranslateText(__instance.text); + __instance.text_shadow = StringStore.TranslateText(__instance.text_shadow); + + //TextMeshProUGUI pointsText = __instance.transform.GetChild(0).GetComponent(); + //pointsText = StringStore.TranslateText(pointsText); + //pointsText.autoSizeTextContainer = true; + + + //Transform TravelMenuTransform = __instance.transform.parent.transform; + + //Transform refreshTransform = TravelMenuTransform.Find("Refresh2").transform.Find("bank"); + //if (refreshTransform != null) + //{ + // Transform text_1Transform = refreshTransform.Find("text_1"); + // if (text_1Transform != null) + // { + // TextMeshProUGUI text_1 = text_1Transform.GetComponent(); + + // if (text_1) + // { + // text_1 = StringStore.TranslateText(text_1); + // text_1.autoSizeTextContainer = true; + // } + // } + + // Transform text_2Transform = refreshTransform.Find("text_2"); + // if (text_2Transform != null) + // { + // TextMeshProUGUI text_2 = text_2Transform.GetComponent(); + + // if (text_2) + // { + // text_2 = StringStore.TranslateText(text_2); + // text_2.autoSizeTextContainer = true; + // } + // } + //} + } + } } diff --git a/MelonLoader/Patches/Managers/SaveMenu_Patch.cs b/MelonLoader/Patches/Managers/SaveMenu_Patch.cs index 26f94e4..2a36d90 100644 --- a/MelonLoader/Patches/Managers/SaveMenu_Patch.cs +++ b/MelonLoader/Patches/Managers/SaveMenu_Patch.cs @@ -18,6 +18,11 @@ namespace PvZ_Fusion_Translator.Patches.Managers __instance.title.font = fontAsset; __instance.title_shadow.text = StringStore.TranslateText(__instance.title_shadow.text); __instance.title_shadow.font = fontAsset; + + foreach(SaveMenuBtn level in __instance.levels) + { + level.theName.text = StringStore.TranslateText(level.theName.text); + } } } } diff --git a/MelonLoader/Patches/Managers/TravelMenuMgr_Patch.cs b/MelonLoader/Patches/Managers/TravelMenuMgr_Patch.cs index efb3636..2f873c0 100644 --- a/MelonLoader/Patches/Managers/TravelMenuMgr_Patch.cs +++ b/MelonLoader/Patches/Managers/TravelMenuMgr_Patch.cs @@ -5,47 +5,47 @@ using PvZ_Fusion_Translator.AssetStore; namespace PvZ_Fusion_Translator.Patches.Managers { - [HarmonyPatch(typeof(TravelMenuMgr))] - public static class TravelMenuMgr_Patch - { - [HarmonyPatch(nameof(TravelMenuMgr.Start))] - [HarmonyPostfix] - private static void Start(TravelMenuMgr __instance) - { - foreach(TextMeshProUGUI text in __instance.textMesh) - { - text.text = StringStore.TranslateText(text.text); - } - foreach(TextMeshProUGUI text in __instance.textMeshShadow) - { - text.text = StringStore.TranslateText(text.text); - } - } - [HarmonyPatch(nameof(TravelMenuMgr.SetText))] - [HarmonyPostfix] - private static void SetText(TravelMenuMgr __instance) - { - foreach(TextMeshProUGUI text in __instance.textMesh) - { - text.text = StringStore.TranslateText(text.text); - } - foreach(TextMeshProUGUI text in __instance.textMeshShadow) - { - text.text = StringStore.TranslateText(text.text); - } - } - [HarmonyPatch(nameof(TravelMenuMgr.SetRichText), [typeof(int), typeof(int), typeof(TextMeshProUGUI), typeof(string)])] - [HarmonyPostfix] - private static void SetRichText(TravelMenuMgr __instance) - { - foreach(TextMeshProUGUI text in __instance.textMesh) - { - text.text = StringStore.TranslateText(text.text); - } - foreach(TextMeshProUGUI text in __instance.textMeshShadow) - { - text.text = StringStore.TranslateText(text.text); - } - } - } + //[HarmonyPatch(typeof(TravelMenuMgr))] + //public static class TravelMenuMgr_Patch + //{ + // [HarmonyPatch(nameof(TravelMenuMgr.Start))] + // [HarmonyPostfix] + // private static void Start(TravelMenuMgr __instance) + // { + // foreach(TextMeshProUGUI text in __instance.textMesh) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // foreach(TextMeshProUGUI text in __instance.textMeshShadow) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // } + // [HarmonyPatch(nameof(TravelMenuMgr.SetText))] + // [HarmonyPostfix] + // private static void SetText(TravelMenuMgr __instance) + // { + // foreach(TextMeshProUGUI text in __instance.textMesh) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // foreach(TextMeshProUGUI text in __instance.textMeshShadow) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // } + // [HarmonyPatch(nameof(TravelMenuMgr.SetRichText), [typeof(int), typeof(int), typeof(TextMeshProUGUI), typeof(string)])] + // [HarmonyPostfix] + // private static void SetRichText(TravelMenuMgr __instance) + // { + // foreach(TextMeshProUGUI text in __instance.textMesh) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // foreach(TextMeshProUGUI text in __instance.textMeshShadow) + // { + // text.text = StringStore.TranslateText(text.text); + // } + // } + //} } diff --git a/MelonLoader/Patches/Managers/UIMgr_Patch.cs b/MelonLoader/Patches/Managers/UIMgr_Patch.cs index a04537f..3b49429 100644 --- a/MelonLoader/Patches/Managers/UIMgr_Patch.cs +++ b/MelonLoader/Patches/Managers/UIMgr_Patch.cs @@ -7,16 +7,16 @@ namespace PvZ_Fusion_Translator.Patches.Managers [HarmonyPatch(typeof(UIMgr))] public class UIMgr_Patch { - [HarmonyPatch(nameof(UIMgr.EnterMainMenu))] - [HarmonyPostfix] - private static void EnterMainMenu(UIMgr __instance) - { - // Log.LogInfo("Entered Main Menu"); - #if MULTI_LANGUAGE - WarningStore.WarningReload(Utils.Language); - #else - WarningStore.WarningReload(); - #endif - } + //[HarmonyPatch(nameof(UIMgr.EnterMainMenu))] + //[HarmonyPostfix] + //private static void EnterMainMenu(UIMgr __instance) + //{ + // // Log.LogInfo("Entered Main Menu"); + // #if MULTI_LANGUAGE + // WarningStore.WarningReload(Utils.Language); + // #else + // WarningStore.WarningReload(); + // #endif + //} } } \ No newline at end of file diff --git a/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj b/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj new file mode 100644 index 0000000..674030e --- /dev/null +++ b/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj @@ -0,0 +1,518 @@ + + + net6.0 + enable + disable + PvZ_Fusion_Translator + default + false + 1.0.0.0 + 1.0.0.0 + en-US + PvZ_Fusion_Translator + latest + enable + Debug;DebugEnglish;ReleaseMulti;ReleaseEnglish;DebugTesting;ReleaseOther;DebugObfuscate;ReleaseObfuscate + C:\Users\rainb\Desktop\PC_PVZ-Fusion_2.4.2 + AnyCPU;ARM64;x64 + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Solo)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Multi)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Multi)\Game Files + + + + D:\Games\[Series] PvZ Mods\(Fangame) Fusion\(Latest - Multi)\Game Files + + + + + + + + + + + + + + + + + + + + + $(GamePath)\Mods\AudioImportLib.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Assembly-CSharp.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2CppMono.Security.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2Cppmscorlib.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2CppSystem.Configuration.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2CppSystem.Core.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2CppSystem.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2CppSystem.Xml.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Il2Cpp__Generated.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.2D.Animation.Runtime.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.Burst.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.Burst.Unsafe.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.Collections.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.Collections.LowLevel.ILSupport.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.InternalAPIEngineBridge.001.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.Mathematics.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.RenderPipeline.Universal.ShaderLibrary.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.RenderPipelines.Core.Runtime.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.RenderPipelines.Universal.Runtime.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.TextMeshPro.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\Unity.VisualScripting.Core.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.AccessibilityModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.AIModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.AndroidJNIModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.AnimationModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ARModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.AssetBundleModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.AudioModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ClothModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ContentLoadModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.CoreModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.CrashReportingModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.DirectorModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.DSPGraphModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.GameCenterModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.GIModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.GridModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.HotReloadModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ImageConversionModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.IMGUIModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.InputLegacyModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.InputModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.JSONSerializeModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.LocalizationModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ParticleSystemModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.PerformanceReportingModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.Physics2DModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.PhysicsModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ProfilerModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.PropertiesModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.ScreenCaptureModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.SharedInternalsModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.SpriteMaskModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.SpriteShapeModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.StreamingModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.SubstanceModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.SubsystemsModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TerrainModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TerrainPhysicsModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TextCoreFontEngineModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TextCoreTextEngineModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TextRenderingModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TilemapModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.TLSModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UI.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UIElementsModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UIModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UmbraModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityAnalyticsCommonModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityAnalyticsModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityConnectModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityCurlModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityTestProtocolModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityWebRequestAssetBundleModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityWebRequestAudioModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityWebRequestModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityWebRequestTextureModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.UnityWebRequestWWWModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.VehiclesModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.VFXModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.VideoModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.VRModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.WindModule.dll + + + $(GamePath)\MelonLoader\Il2CppAssemblies\UnityEngine.XRModule.dll + + + $(GamePath)\MelonLoader\net6\MelonLoader.dll + + + $(GamePath)\MelonLoader\net6\0Harmony.dll + + + $(GamePath)\MelonLoader\net6\Il2CppInterop.Runtime.dll + + + $(GamePath)\MelonLoader\net6\Il2CppInterop.Common.dll + + + + + + True + false + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;DEBUG + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;DEBUG;OBFUSCATE + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;DEBUG + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;DEBUG;OBFUSCATE + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;DEBUG + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;DEBUG;OBFUSCATE + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;TESTING;DEBUG + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;TESTING;DEBUG + + + + $(DefineConstants);MULTI_LANGUAGE;CHEAT;TESTING;DEBUG + + + + $(DefineConstants);CHEAT;DEBUG + + + + $(DefineConstants);CHEAT;DEBUG + + + + $(DefineConstants);CHEAT;DEBUG + + + + $(DefineConstants);MULTI_LANGUAGE;OBFUSCATE + + + + $(DefineConstants);MULTI_LANGUAGE;OBFUSCATE + + + + $(DefineConstants);MULTI_LANGUAGE;OBFUSCATE + + + + $(DefineConstants);OTHER;OBFUSCATE + + + + $(DefineConstants);OTHER;OBFUSCATE + + + + $(DefineConstants);OTHER;OBFUSCATE + + + + $(DefineConstants);MULTI_LANGUAGE;OBFUSCATE;RELEASE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PvZ Fusion Translator.sln b/PvZ Fusion Translator.sln index d5172a2..24282e5 100644 --- a/PvZ Fusion Translator.sln +++ b/PvZ Fusion Translator.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.10.35122.118 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PvZ Fusion Translator [MelonLoader]", "MelonLoader\PvZ Fusion Translator [MelonLoader].csproj", "{90AA30F8-EFE7-6E1A-3859-0EE79252222A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PvZ Fusion Translator [BepInEx]", "BepInEx\PvZ Fusion Translator [BepInEx].csproj", "{395E60A0-A884-61F2-EF18-BC94BB7D9C69}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}" ProjectSection(SolutionItems) = preProject README.md = README.md @@ -88,54 +86,6 @@ Global {90AA30F8-EFE7-6E1A-3859-0EE79252222A}.ReleaseOther|ARM64.Build.0 = ReleaseOther|ARM64 {90AA30F8-EFE7-6E1A-3859-0EE79252222A}.ReleaseOther|x64.ActiveCfg = ReleaseOther|x64 {90AA30F8-EFE7-6E1A-3859-0EE79252222A}.ReleaseOther|x64.Build.0 = ReleaseOther|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.Debug|Any CPU.ActiveCfg = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.Debug|Any CPU.Build.0 = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.Debug|ARM64.Build.0 = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.Debug|x64.ActiveCfg = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.Debug|x64.Build.0 = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugEnglish|Any CPU.ActiveCfg = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugEnglish|Any CPU.Build.0 = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugEnglish|ARM64.ActiveCfg = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugEnglish|ARM64.Build.0 = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugEnglish|x64.ActiveCfg = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugEnglish|x64.Build.0 = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugObfuscate|Any CPU.ActiveCfg = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugObfuscate|Any CPU.Build.0 = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugObfuscate|ARM64.ActiveCfg = DebugObfuscate|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugObfuscate|ARM64.Build.0 = DebugObfuscate|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugObfuscate|x64.ActiveCfg = DebugObfuscate|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugObfuscate|x64.Build.0 = DebugObfuscate|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugTesting|Any CPU.ActiveCfg = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugTesting|Any CPU.Build.0 = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugTesting|ARM64.ActiveCfg = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugTesting|ARM64.Build.0 = Debug|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugTesting|x64.ActiveCfg = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.DebugTesting|x64.Build.0 = Debug|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseEnglish|Any CPU.ActiveCfg = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseEnglish|Any CPU.Build.0 = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseEnglish|ARM64.ActiveCfg = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseEnglish|ARM64.Build.0 = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseEnglish|x64.ActiveCfg = Release|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseEnglish|x64.Build.0 = Release|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseMulti|Any CPU.ActiveCfg = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseMulti|Any CPU.Build.0 = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseMulti|ARM64.ActiveCfg = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseMulti|ARM64.Build.0 = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseMulti|x64.ActiveCfg = Release|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseMulti|x64.Build.0 = Release|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseObfuscate|Any CPU.ActiveCfg = ReleaseObfuscate|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseObfuscate|Any CPU.Build.0 = ReleaseObfuscate|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseObfuscate|ARM64.ActiveCfg = ReleaseObfuscate|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseObfuscate|ARM64.Build.0 = ReleaseObfuscate|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseObfuscate|x64.ActiveCfg = ReleaseObfuscate|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseObfuscate|x64.Build.0 = ReleaseObfuscate|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseOther|Any CPU.ActiveCfg = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseOther|Any CPU.Build.0 = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseOther|ARM64.ActiveCfg = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseOther|ARM64.Build.0 = Release|Any CPU - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseOther|x64.ActiveCfg = Release|x64 - {395E60A0-A884-61F2-EF18-BC94BB7D9C69}.ReleaseOther|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE