From f57245d26f1ee2d32bf589158728010d8a2e5d45 Mon Sep 17 00:00:00 2001 From: Adrian Date: Sat, 17 Aug 2024 02:09:07 -0400 Subject: [PATCH] Supports multilingual with proper line wrapping in actionMessage text in command phase --- src/locales/ca_ES/command-ui-handler.ts | 2 +- src/locales/de/command-ui-handler.ts | 2 +- src/locales/en/command-ui-handler.ts | 2 +- src/locales/es/command-ui-handler.ts | 2 +- src/locales/fr/command-ui-handler.ts | 2 +- src/locales/pt_BR/command-ui-handler.ts | 2 +- src/locales/zh_CN/command-ui-handler.ts | 2 +- src/locales/zh_TW/command-ui-handler.ts | 2 +- src/ui/command-ui-handler.ts | 28 +++++++++++++++++++++++-- 9 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/locales/ca_ES/command-ui-handler.ts b/src/locales/ca_ES/command-ui-handler.ts index c4c65db0aa0..f36b5bfcdf1 100644 --- a/src/locales/ca_ES/command-ui-handler.ts +++ b/src/locales/ca_ES/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "Ball", "pokemon": "Pokémon", "run": "Run", - "actionMessage": "What will\n{{pokemonName}} do?", + "actionMessage": "What will {{pokemonName}} do?", } as const; diff --git a/src/locales/de/command-ui-handler.ts b/src/locales/de/command-ui-handler.ts index cd7da3fbf26..c6bb0a9f60b 100644 --- a/src/locales/de/command-ui-handler.ts +++ b/src/locales/de/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "Ball", "pokemon": "Pokémon", "run": "Fliehen", - "actionMessage": "Was soll\n{{pokemonName}} tun?", + "actionMessage": "Was soll {{pokemonName}} tun?", } as const; diff --git a/src/locales/en/command-ui-handler.ts b/src/locales/en/command-ui-handler.ts index c4c65db0aa0..f36b5bfcdf1 100644 --- a/src/locales/en/command-ui-handler.ts +++ b/src/locales/en/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "Ball", "pokemon": "Pokémon", "run": "Run", - "actionMessage": "What will\n{{pokemonName}} do?", + "actionMessage": "What will {{pokemonName}} do?", } as const; diff --git a/src/locales/es/command-ui-handler.ts b/src/locales/es/command-ui-handler.ts index 5ddde2c983a..406bfb692a9 100644 --- a/src/locales/es/command-ui-handler.ts +++ b/src/locales/es/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "Balls", "pokemon": "Pokémon", "run": "Huir", - "actionMessage": "¿Qué debería\nhacer {{pokemonName}}?", + "actionMessage": "¿Qué debería hacer {{pokemonName}}?", } as const; diff --git a/src/locales/fr/command-ui-handler.ts b/src/locales/fr/command-ui-handler.ts index 42180d31276..28c12a91c3c 100644 --- a/src/locales/fr/command-ui-handler.ts +++ b/src/locales/fr/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "Ball", "pokemon": "Pokémon", "run": "Fuite", - "actionMessage": "Que doit faire\n{{pokemonName}} ?", + "actionMessage": "Que doit faire {{pokemonName}} ?", } as const; diff --git a/src/locales/pt_BR/command-ui-handler.ts b/src/locales/pt_BR/command-ui-handler.ts index cd8f7c4a378..67c7cee893b 100644 --- a/src/locales/pt_BR/command-ui-handler.ts +++ b/src/locales/pt_BR/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "Bolas", "pokemon": "Pokémon", "run": "Fugir", - "actionMessage": "O que {{pokemonName}}\ndeve fazer?", + "actionMessage": "O que {{pokemonName}} deve fazer?", } as const; diff --git a/src/locales/zh_CN/command-ui-handler.ts b/src/locales/zh_CN/command-ui-handler.ts index 57397a930df..ee796a172cf 100644 --- a/src/locales/zh_CN/command-ui-handler.ts +++ b/src/locales/zh_CN/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "精灵球", "pokemon": "宝可梦", "run": "逃跑", - "actionMessage": "要让\n{{pokemonName}} 做什么?", + "actionMessage": "要让 {{pokemonName}} 做什么?", } as const; diff --git a/src/locales/zh_TW/command-ui-handler.ts b/src/locales/zh_TW/command-ui-handler.ts index 300b20224b3..8b68919225d 100644 --- a/src/locales/zh_TW/command-ui-handler.ts +++ b/src/locales/zh_TW/command-ui-handler.ts @@ -5,5 +5,5 @@ export const commandUiHandler: SimpleTranslationEntries = { "ball": "精靈球", "pokemon": "寶可夢", "run": "逃跑", - "actionMessage": "要讓\n{{pokemonName}} 做甚麼?", + "actionMessage": "要讓 {{pokemonName}} 做甚麼?", } as const; diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 11814a25240..920ec791429 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -66,8 +66,32 @@ export default class CommandUiHandler extends UiHandler { messageHandler.bg.setVisible(true); messageHandler.commandWindow.setVisible(true); messageHandler.movesWindowContainer.setVisible(false); - messageHandler.message.setWordWrapWidth(1110); - messageHandler.showText(i18next.t("commandUiHandler:actionMessage", {pokemonName: getPokemonNameWithAffix(commandPhase.getPokemon())}), 0); + const currentLanguage = i18next.resolvedLanguage!; + const ignoreBalanceText = []; + const messageMaxWidth = this.scene.game.canvas.width - messageHandler.commandWindow.getBounds().width - messageHandler.message.getBounds().x; + messageHandler.message.setWordWrapWidth(messageMaxWidth); + const commandMessage = i18next.t("commandUiHandler:actionMessage", {pokemonName: getPokemonNameWithAffix(commandPhase.getPokemon())}); + const textWrapped = messageHandler.message.getWrappedText(commandMessage); + const fontSizeToNumber = (fs:number|string):number=>(parseInt(fs.toString().replace("px",""))); + const fontSize = fontSizeToNumber(messageHandler.message.getData("originalFontSize") ?? messageHandler.message.style.fontSize); + messageHandler.message.setFontSize(fontSize); + messageHandler.message.setData("originalFontSize",messageHandler.message.getData("originalFontSize") ?? fontSize); + + // Text Balance + if (!ignoreBalanceText.some(localKey=>localKey===currentLanguage) && textWrapped[1] && textWrapped.length <= messageHandler.message.style.maxLines && textWrapped[0].replace(" ","").length * 0.25 > textWrapped[1].replace(" ","").length) { + messageHandler.message.setWordWrapWidth((this.scene.game.canvas.width - messageHandler.commandWindow.getBounds().width - messageHandler.message.parentContainer.getBounds().x) * 0.65); + } + + // Ajust Text + if (messageHandler.message.getWrappedText(commandMessage).length > messageHandler.message.style.maxLines) { + let fontDecrement = fontSize; + while (messageHandler.message.getWrappedText(commandMessage).length > messageHandler.message.style.maxLines) { + fontDecrement -= 1; + messageHandler.message.setFontSize(fontDecrement); + } + } + + messageHandler.showText(commandMessage, 0); this.setCursor(this.getCursor()); return true;