diff --git a/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit.csproj b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit.csproj new file mode 100644 index 0000000..6a042c7 --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit.csproj @@ -0,0 +1,37 @@ + + + + net35 + BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit + ResizeTextForBestFit + 1.0.0 + true + 9.0 + + + + + + + + + + + + + + + + ..\lib\SteamRelease\Assembly-CSharp.dll + false + + + ..\lib\UnityEngine\UnityEngine.UI.dll + false + + + + + + + diff --git a/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/HarmonyPatches/KeyBindScript_Start.cs b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/HarmonyPatches/KeyBindScript_Start.cs new file mode 100644 index 0000000..56f6f68 --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/HarmonyPatches/KeyBindScript_Start.cs @@ -0,0 +1,35 @@ +using HarmonyLib; +using UnityEngine.UI; + +namespace BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit.HarmonyPatches +{ + [HarmonyPatch(typeof(KeyBindScript), "Start")] + public class KeyBindScript_Start + { + public static int maxSize = 18; + + public static bool singleOutline = true; + + // Set every text child components to fit automatically. + public static void Postfix(KeyBindScript __instance) + { + foreach (var text in __instance.GetComponentsInChildren()) + { + text.resizeTextForBestFit = true; + text.resizeTextMaxSize = maxSize; + + if (singleOutline) + { + var outlines = text.GetComponents(); + + for (var i = 1; i < outlines.Length; ++i) + { + var outline = outlines[i]; + + outline.enabled = false; + } + } + } + } + } +} diff --git a/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/NuGet.Config b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/NuGet.Config new file mode 100644 index 0000000..1864ded --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/NuGet.Config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/Plugin.cs b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/Plugin.cs new file mode 100644 index 0000000..b17b7d3 --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit/Plugin.cs @@ -0,0 +1,52 @@ +using BepInEx; +using BepInEx.Configuration; +using HarmonyLib; +using System; + +namespace BepInEx5Plugins.Ash.Alisa.ResizeTextForBestFit +{ + [BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)] + public class Plugin : BaseUnityPlugin + { + private readonly ConfigEntry maxSize; + + private readonly ConfigEntry singleOutline; + + private Plugin() + { + maxSize = Config.Bind("ResizeTextForBestFit", "Max Size", 18); + singleOutline = Config.Bind("ResizeTextForBestFit", "Single Outline", true); + + Config.SettingChanged += Config_SettingChanged; + + ApplySettings(); + } + + private void Config_SettingChanged(object sender, EventArgs e) + { + ApplySettings(); + } + + private void ApplySettings() + { + HarmonyPatches.KeyBindScript_Start.maxSize = maxSize.Value; + HarmonyPatches.KeyBindScript_Start.singleOutline = singleOutline.Value; + } + + private void Awake() + { + try + { + Logger.LogInfo($"Plugin {PluginInfo.PLUGIN_GUID} is loaded!"); + + var harmony = new Harmony(Info.Metadata.GUID); + + harmony.PatchAll(); + } + catch (Exception exception) + { + Console.WriteLine(exception); + } + } + } +}