diff --git a/Assets.Scripts.UI.TitleScreen/TitleScreenButton.cs b/Assets.Scripts.UI.TitleScreen/TitleScreenButton.cs index 4c0cf050..3a682f61 100644 --- a/Assets.Scripts.UI.TitleScreen/TitleScreenButton.cs +++ b/Assets.Scripts.UI.TitleScreen/TitleScreenButton.cs @@ -25,6 +25,9 @@ public class TitleScreenButton : MonoBehaviour private string pressedSprite; + private static bool useHoverSpriteOnlyForTranslator = false; + private static float hoverOpacityForTranslators = 0.5f; + private void OnClick() { GameSystem gameSystem = GameSystem.Instance; @@ -101,6 +104,17 @@ private void Awake() { button = GetComponent(); hoverSprite = button.hoverSprite; + + if (useHoverSpriteOnlyForTranslator) + { + pressedSprite = hoverSprite; + button.hoverSprite = hoverSprite; + button.pressedSprite = hoverSprite; + button.disabledSprite = hoverSprite; + GetComponent().spriteName = hoverSprite; + button.hover.a = hoverOpacityForTranslators; + } + pressedSprite = button.pressedSprite; button.hoverSprite = button.normalSprite; button.pressedSprite = button.normalSprite; @@ -125,5 +139,20 @@ private void LateUpdate() } } } + + // MUST BE CALLED BEFORE BUTTONS APPEAR. Has no effect if buttons already on screen. + // + // On hou+, in the UI file, there are two images for the menu buttons. + // One is very wide (button hovered), and one only is as long as the english text + // (button not hovered). Translators may be unable to fit the text in the short + // button, so I've added a mode which only uses the long button, and uses the engine + // to give a fade effect when you hover the button. + // + // Then translators can use the wide button to fit in more text. + public static void UseHoverSpriteOnlyForTranslators(bool useHoverSprite, float hoverOpacity) + { + useHoverSpriteOnlyForTranslator = useHoverSprite; + hoverOpacityForTranslators = hoverOpacity; + } } } diff --git a/MOD.Scripts.Core/MODLocalization.cs b/MOD.Scripts.Core/MODLocalization.cs index 1b0a3529..e44ff461 100644 --- a/MOD.Scripts.Core/MODLocalization.cs +++ b/MOD.Scripts.Core/MODLocalization.cs @@ -5,6 +5,7 @@ using Assets.Scripts.Core; using MOD.Scripts.UI; using System.Globalization; +using Assets.Scripts.UI.TitleScreen; namespace MOD.Scripts.Core.Localization { @@ -184,6 +185,17 @@ public static void LoadFromJSON() Loc.dateTimeFormat = timeFormatEntry.text; } } + + if (Loc.GetEntry("HouPlusWideMenuButtons", out LocalizationEntry houWideMenuButtons)) + { + if (houWideMenuButtons.TextHasValue()) + { + if(MODUtility.TryParseInvariantCulture(houWideMenuButtons.text, out float opacity)) + { + TitleScreenButton.UseHoverSpriteOnlyForTranslators(opacity > 0, opacity); + } + } + } } catch (System.Exception e) {