diff --git a/SlovakFont.cs b/SlovakFont.cs index 7b933ea..ca525b1 100644 --- a/SlovakFont.cs +++ b/SlovakFont.cs @@ -144,6 +144,7 @@ namespace SlovakTranslation var bestLength = 0; foreach (var candidate in _gameDynamicFonts) { + if (candidate == null) continue; var baseName = candidate.name.EndsWith("_Dynamic") ? candidate.name.Substring(0, candidate.name.Length - "_Dynamic".Length) : candidate.name; @@ -283,6 +284,12 @@ namespace SlovakTranslation [HarmonyPostfix, HarmonyPatch(typeof(Text), "text", MethodType.Setter)] public static void TextChanged(Text __instance) => SlovakFont.Apply(__instance); + // The game reassigns fonts wholesale when the language changes. Re-deciding here + // is safe: our own assignment re-enters once, finds the state already correct, + // and stops. + [HarmonyPostfix, HarmonyPatch(typeof(Text), "font", MethodType.Setter)] + public static void FontAssigned(Text __instance) => SlovakFont.Apply(__instance); + [HarmonyPostfix, HarmonyPatch(typeof(TextTranslation), nameof(TextTranslation.SetLanguage))] public static void LanguageChanged() => SlovakFont.ApplyToAll(); } diff --git a/SlovakTranslation.cs b/SlovakTranslation.cs index 96ab18b..56e753f 100644 --- a/SlovakTranslation.cs +++ b/SlovakTranslation.cs @@ -1,7 +1,6 @@ using HarmonyLib; using OWML.Common; using OWML.ModHelper; -using UnityEngine; namespace SlovakTranslation { @@ -68,14 +67,5 @@ namespace SlovakTranslation SlovakFont.ApplyToAll(); } - /// Labels can be built long after a scene loads, so keep sweeping. - private float _nextSweep; - - private void Update() - { - if (!SlovakFont.Loaded || Time.unscaledTime < _nextSweep) return; - _nextSweep = Time.unscaledTime + 2f; - SlovakFont.ApplyToAll(); - } } } diff --git a/assets/slovakfont b/assets/slovakfont index dbbe243..557e1ee 100644 Binary files a/assets/slovakfont and b/assets/slovakfont differ