using HarmonyLib; using Il2Cpp; using Il2CppTMPro; using PvZ_Fusion_Translator.AssetStore; using PvZ_Fusion_Translator.Patches.GameObjects.ButtonObjects; using Unity.VisualScripting; using UnityEngine; using UnityEngine.Events; using UnityEngine.Rendering; using UnityEngine.UIElements; namespace PvZ_Fusion_Translator.Patches.GameObjects { [HarmonyPatch(typeof(MainMenu))] public class MainMenu_Patch { public static void AnimOver(BaseMenu __instance) { Transform changelogObj = __instance.transform.Find("Grave/UpdateInfoButton"); Transform langObj = UnityEngine.Object.Instantiate(changelogObj, changelogObj.position + new Vector3(0.0f, 0.855f), changelogObj.rotation, __instance.transform.Find("Grave")); langObj.name = "LanguagesButton"; __instance.collider2Ds.Add(langObj.GetComponent()); UIButton langBtn = langObj.GetComponent(); foreach(TextMeshProUGUI text in langObj.GetComponentsInChildren()) { text.text = StringStore.TranslateText("Languages"); } langBtn.clickEvent = new UnityEvent(); langBtn.clickEvent.AddListener(new Action(() => OpenLanguageMenu(langBtn.gameObject))); } public static void OpenLanguageMenu(GameObject langBtn) { UIMgr.EnterOptionMenu(); GameObject newOptionsMenu = GameAPP.canvasUp.Find("OptionMenu(Clone)").gameObject; newOptionsMenu.name = "LanguageMenu"; List toKeep = new List() { "Background", "F", "Goback"}; foreach(Transform child in newOptionsMenu.GetComponentsInChildren()) { if(!toKeep.Contains(child.name) && !toKeep.Contains(child.parent.name) && child.name != "LanguageMenu") { child.gameObject.SetActive(false); } } OptionBtn templateButton = newOptionsMenu.transform.Find("Buttons/F").GetComponent(); OptLanguageBtn_Patch.OptLangBtn_Patch.Awake(templateButton); UIButton goBackButton = newOptionsMenu.transform.Find("Goback").GetComponent(); newOptionsMenu.transform.Find("Buttons/F").gameObject.SetActive(false); newOptionsMenu.transform.Find("Buttons").gameObject.SetActive(true); foreach (TextMeshProUGUI text in newOptionsMenu.transform.Find("Background").GetComponentsInChildren()) { text.text = StringStore.TranslateText("Language Settings"); } /*GameObject optionMenuAnchor = UnityEngine.Object.Instantiate(assetBundle.LoadAsset("OptionMenu").TryCast(), GameAPP.canvasUp); optionMenuAnchor.transform.SetParent(newOptionsMenu.transform, false); Transform messageAnchor = optionMenuAnchor.transform.Find("MessageAnchor"); Transform plantAnchor = optionMenuAnchor.transform.Find("PlantAnchor"); System.Random random = new System.Random(); var plantTypes = Enum.GetValues(typeof(PlantType)); PlantType randomPlantChoice = (PlantType)plantTypes.GetValue(random.Next(plantTypes.Length)); if(!GameAPP.resourcesManager.plantPrefabs.ContainsKey(randomPlantChoice) || GameAPP.resourcesManager.plantPrefabs[randomPlantChoice] == null) { randomPlantChoice = (PlantType)plantTypes.GetValue(random.Next(plantTypes.Length)); } if (GameAPP.resourcesManager.plantPrefabs[randomPlantChoice] != null) { GameObject plant = CreatePlant.SetPlantInAlmamac(plantAnchor.position, (int)randomPlantChoice); plant.transform.SetParent(newOptionsMenu.transform); SortingGroup sortingGroup = plant.AddComponent(); sortingGroup.sortingLayerName = "UI"; sortingGroup.sortingOrder = 20001; //plant.transform.position = new Vector3(-7.21f, -3.66f); UnityEngine.Object.Destroy(plant.GetComponent()); }*/ /*GameObject messageObj = new GameObject(); messageObj.name = "MultilangMessage"; messageObj.transform.SetParent(newOptionsMenu.transform); TextMeshProUGUI messageText = messageObj.AddComponent(); messageObj.transform.localScale = Vector3.one; messageText.autoSizeTextContainer = false; messageText.font = FontStore.LoadTMPFont(Utils.LanguageEnum.English.ToString()); messageText.text = "Hello this is multilanguage choose language over there ------>";*/ } [HarmonyPatch(nameof(MainMenu.EnterUpdateUrl))] [HarmonyPrefix] public static bool Pre_EnterUpdateUrl(MainMenu __instance) { System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { FileName = @"https://github.com/Teyliu/PVZF-Translation", UseShellExecute = true }); return false; } } }