From 42f5667d57b7b62136fcb9b081c7095715d275be Mon Sep 17 00:00:00 2001 From: SillyStar-Github <90102598+SillyStar-Github@users.noreply.github.com> Date: Tue, 23 Dec 2025 02:56:28 -0500 Subject: [PATCH] skin button fixes --- .../GameObjects/AlmanacPlantMenu_Patch.cs | 92 +++++++++++++++++++ .../GameObjects/AlmanacPlantWindow_Patch.cs | 2 + ...PvZ Fusion Translator [MelonLoader].csproj | 4 +- 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/MelonLoader/Patches/GameObjects/AlmanacPlantMenu_Patch.cs b/MelonLoader/Patches/GameObjects/AlmanacPlantMenu_Patch.cs index b9aa2f0..3dbf239 100644 --- a/MelonLoader/Patches/GameObjects/AlmanacPlantMenu_Patch.cs +++ b/MelonLoader/Patches/GameObjects/AlmanacPlantMenu_Patch.cs @@ -3,6 +3,7 @@ using Il2Cpp; using Il2CppTMPro; using PvZ_Fusion_Translator.AssetStore; using System.Text.RegularExpressions; +using Unity.Collections; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; @@ -29,6 +30,19 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects text.autoSizeTextContainer = true; } } + + // skin button resize + + AlmanacPlantWindow window = __instance.window; + GameObject skinButton = window.skinButton; + GameObject skinTextObj = skinButton.transform.GetChild(0).gameObject; + GameObject skinShadowTextObj = skinTextObj.transform.GetChild(0).gameObject; + TextMeshProUGUI skinShadowText = skinShadowTextObj.GetComponent(); + skinShadowText.text = StringStore.TranslateText("换肤_S"); + skinButton.transform.localScale /= 1.75f; + skinButton.transform.localPosition = new Vector3(0.0f, 111.345f, 0.0f); + skinButton.transform.GetChild(1).Translate(new Vector3(-0.35f, 0)); + skinButton.transform.GetChild(2).Translate(new Vector3(0.35f, 0)); } [HarmonyPatch(nameof(AlmanacPlantMenu.SearchChanged))] @@ -54,6 +68,24 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects foreach (AlmanacPlantBank.PlantInfo plantInfo in plantData.plants) { + //List uniqueIngredients = GetIngredients(plantInfo.seedType); + + //// ingredient-based search + + //foreach(int i in uniqueIngredients) + //{ + // string name = Utils.GetPlantNameFromAlmanac((PlantType)i); + + // if(name.ToLower().Contains(search.ToLower())) + // { + // searchedPlants.Add((PlantType)i); + // } + //} + + // keyword-based search + + // name-based search + if (plantInfo.name.ToLower().Contains(search.ToLower())) { searchedPlants.Add((PlantType)plantInfo.seedType); @@ -67,5 +99,65 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects return true; } + + private static List GetIngredients(int theSeedType) + { + List ingredientPairs = new(); + Il2CppSystem.Array mixData = MixData.data.Cast(); + int rows = mixData.GetLength(0); + int columns = mixData.GetLength(1); + + for(int i = 0; i < rows; i++) + { + for(int j = 0; j < columns; j++) + { + if(ContainsFormula(theSeedType)) + { + if (mixData.GetValue(i, j).Unbox() == theSeedType) + { + if (!ingredientPairs.Contains(i)) + { + ingredientPairs.Add(i); + } + + if (!ingredientPairs.Contains(j)) + { + ingredientPairs.Add(j); + } + } + } + else + { + return ingredientPairs; + } + + } + } + + return ingredientPairs; + } + + private static bool ContainsFormula(int theSeedType) + { + bool contains = false; + + Il2CppSystem.Array mixData = MixData.data.Cast(); + int rows = mixData.GetLength(0); + int columns = mixData.GetLength(1); + + for (int i = 0; i < rows; i++) + { + for (int j = 0; j < columns; j++) + { + if (mixData.GetValue(i, j).Unbox() == theSeedType) + { + contains = true; + return contains; + } + } + } + + return contains; + } } } diff --git a/MelonLoader/Patches/GameObjects/AlmanacPlantWindow_Patch.cs b/MelonLoader/Patches/GameObjects/AlmanacPlantWindow_Patch.cs index 1e7260a..5b07557 100644 --- a/MelonLoader/Patches/GameObjects/AlmanacPlantWindow_Patch.cs +++ b/MelonLoader/Patches/GameObjects/AlmanacPlantWindow_Patch.cs @@ -43,8 +43,10 @@ namespace PvZ_Fusion_Translator.Patches.GameObjects { foreach (TextMeshProUGUI text in __instance.showedPlantName) { + text.autoSizeTextContainer = false; text.text = $"{Utils.RemoveSizeTags(plantInfo.name)} ({plantInfo.seedType})"; text.font = fontAsset; + text.fontSizeMax = 21; } __instance.showedPlantIntroduce.text = Utils.RemoveSizeTags(plantInfo.info) + "\n\n" + Utils.RemoveSizeTags(plantInfo.introduce) + "\n\n"; diff --git a/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj b/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj index 251ff6a..e2604aa 100644 --- a/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj +++ b/MelonLoader/PvZ Fusion Translator [MelonLoader].csproj @@ -1,4 +1,4 @@ - + net6.0 enable @@ -13,7 +13,7 @@ latest enable Debug;DebugEnglish;ReleaseMulti;ReleaseEnglish;DebugTesting;ReleaseOther;DebugObfuscate;ReleaseObfuscate - C:\Users\rainb\Desktop\PC_PVZ-Fusion_3.2 + C:\Users\rainb\Desktop\PC_PVZ-Fusion_3.2.1 AnyCPU;ARM64;x64