setup more future language text configuration

This commit is contained in:
Matthew Olker 2024-05-19 23:11:07 -04:00
parent a32f61fbf7
commit b95a59c094
2 changed files with 44 additions and 24 deletions

View File

@ -45,44 +45,40 @@ export interface Starter {
interface LanguageSetting { interface LanguageSetting {
starterInfoTextSize: string, starterInfoTextSize: string,
instructionTextSize: string, instructionTextSize: string,
starterInfoXPosition: integer starterInfoXPos?: integer,
starterInfoYOffset?: integer
} }
const languageSettings: { [key: string]: LanguageSetting } = { const languageSettings: { [key: string]: LanguageSetting } = {
"en":{ "en":{
starterInfoTextSize: '56px', starterInfoTextSize: '56px',
instructionTextSize: '42px', instructionTextSize: '42px',
starterInfoXPosition: 31
}, },
"de":{ "de":{
starterInfoTextSize: '56px', starterInfoTextSize: '56px',
instructionTextSize: '35px', instructionTextSize: '35px',
starterInfoXPosition: 31
}, },
"es":{ "es":{
starterInfoTextSize: '56px', starterInfoTextSize: '56px',
instructionTextSize: '35px', instructionTextSize: '35px',
starterInfoXPosition: 31
}, },
"it":{ "it":{
starterInfoTextSize: '56px', starterInfoTextSize: '56px',
instructionTextSize: '38px', instructionTextSize: '38px',
starterInfoXPosition: 31
}, },
"fr":{ "fr":{
starterInfoTextSize: '54px', starterInfoTextSize: '54px',
instructionTextSize: '42px', instructionTextSize: '42px',
starterInfoXPosition: 31
}, },
"zh_CN":{ "zh_CN":{
starterInfoTextSize: '56px', starterInfoTextSize: '40px',
instructionTextSize: '42px', instructionTextSize: '42px',
starterInfoXPosition: 31 starterInfoYOffset: 2
}, },
"pt_BR":{ "pt_BR":{
starterInfoTextSize: '47px', starterInfoTextSize: '47px',
instructionTextSize: '38px', instructionTextSize: '38px',
starterInfoXPosition: 32 starterInfoXPos: 32,
}, },
} }
@ -220,6 +216,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
setup() { setup() {
const ui = this.getUi(); const ui = this.getUi();
const currentLanguage = i18next.language;
const textSettings = languageSettings[currentLanguage];
this.starterSelectContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); this.starterSelectContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6);
this.starterSelectContainer.setVisible(false); this.starterSelectContainer.setVisible(false);
@ -276,37 +274,38 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonUncaughtText.setOrigin(0, 0); this.pokemonUncaughtText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonUncaughtText); this.starterSelectContainer.add(this.pokemonUncaughtText);
const currentLanguage = i18next.language;
// The position should be set per language // The position should be set per language
let starterInfoXPosition = languageSettings[currentLanguage].starterInfoXPosition; let starterInfoXPos = textSettings?.starterInfoXPos || 31;
let starterInfoYOffset = textSettings?.starterInfoYOffset || 0;
// The font size should be set per language // The font size should be set per language
let starterInfoTextSize = languageSettings[currentLanguage].starterInfoTextSize; let starterInfoTextSize = textSettings.starterInfoTextSize;
this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127 + starterInfoYOffset, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize });
this.pokemonAbilityLabelText.setOrigin(0, 0); this.pokemonAbilityLabelText.setOrigin(0, 0);
this.pokemonAbilityLabelText.setVisible(false); this.pokemonAbilityLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonAbilityLabelText); this.starterSelectContainer.add(this.pokemonAbilityLabelText);
this.pokemonAbilityText = addTextObject(this.scene, starterInfoXPosition, 127, '', TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonAbilityText = addTextObject(this.scene, starterInfoXPos, 127 + starterInfoYOffset, '', TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize });
this.pokemonAbilityText.setOrigin(0, 0); this.pokemonAbilityText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonAbilityText); this.starterSelectContainer.add(this.pokemonAbilityText);
this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136 + starterInfoYOffset, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize });
this.pokemonPassiveLabelText.setOrigin(0, 0); this.pokemonPassiveLabelText.setOrigin(0, 0);
this.pokemonPassiveLabelText.setVisible(false); this.pokemonPassiveLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonPassiveLabelText); this.starterSelectContainer.add(this.pokemonPassiveLabelText);
this.pokemonPassiveText = addTextObject(this.scene, starterInfoXPosition, 136, '', TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonPassiveText = addTextObject(this.scene, starterInfoXPos, 136 + starterInfoYOffset, '', TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize });
this.pokemonPassiveText.setOrigin(0, 0); this.pokemonPassiveText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonPassiveText); this.starterSelectContainer.add(this.pokemonPassiveText);
this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145 + starterInfoYOffset, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize });
this.pokemonNatureLabelText.setOrigin(0, 0); this.pokemonNatureLabelText.setOrigin(0, 0);
this.pokemonNatureLabelText.setVisible(false); this.pokemonNatureLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonNatureLabelText); this.starterSelectContainer.add(this.pokemonNatureLabelText);
this.pokemonNatureText = addBBCodeTextObject(this.scene, starterInfoXPosition, 145, '', TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonNatureText = addBBCodeTextObject(this.scene, starterInfoXPos, 145 + starterInfoYOffset, '', TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize });
this.pokemonNatureText.setOrigin(0, 0); this.pokemonNatureText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonNatureText); this.starterSelectContainer.add(this.pokemonNatureText);
@ -591,7 +590,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.starterSelectContainer.add(this.pokemonEggMovesContainer); this.starterSelectContainer.add(this.pokemonEggMovesContainer);
// The font size should be set per language // The font size should be set per language
let instructionTextSize = languageSettings[currentLanguage].instructionTextSize; let instructionTextSize = textSettings.instructionTextSize;
this.instructionsText = addTextObject(this.scene, 4, 156, '', TextStyle.PARTY, { fontSize: instructionTextSize }); this.instructionsText = addTextObject(this.scene, 4, 156, '', TextStyle.PARTY, { fontSize: instructionTextSize });
this.starterSelectContainer.add(this.instructionsText); this.starterSelectContainer.add(this.instructionsText);

View File

@ -4,6 +4,7 @@ import { ModifierTier } from "../modifier/modifier-tier";
import { EggTier } from "../data/enums/egg-type"; import { EggTier } from "../data/enums/egg-type";
import BattleScene from "../battle-scene"; import BattleScene from "../battle-scene";
import { UiTheme } from "../enums/ui-theme"; import { UiTheme } from "../enums/ui-theme";
import i18next from "i18next";
export enum TextStyle { export enum TextStyle {
MESSAGE, MESSAGE,
@ -28,6 +29,25 @@ export enum TextStyle {
MOVE_INFO_CONTENT MOVE_INFO_CONTENT
}; };
interface LanguageSetting {
summaryFontSize?: string,
battleInfoFontSize?: string,
partyFontSize?: string,
tooltipContentFontSize?: string,
moveInfoFontSize?: string,
textScale?: number
}
const languageSettings: { [key: string]: LanguageSetting } = {
"en":{},
"de":{},
"es":{},
"it":{},
"fr":{},
"zh_CN":{},
"pt_BR":{},
}
export function addTextObject(scene: Phaser.Scene, x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): Phaser.GameObjects.Text { export function addTextObject(scene: Phaser.Scene, x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): Phaser.GameObjects.Text {
const [ styleOptions, shadowColor, shadowSize ] = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions); const [ styleOptions, shadowColor, shadowSize ] = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions);
@ -64,6 +84,7 @@ export function addTextInputObject(scene: Phaser.Scene, x: number, y: number, wi
} }
function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): [ Phaser.Types.GameObjects.Text.TextStyle | InputText.IConfig, string, integer ] { function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): [ Phaser.Types.GameObjects.Text.TextStyle | InputText.IConfig, string, integer ] {
const lang = i18next.language;
let shadowColor: string; let shadowColor: string;
let shadowSize = 6; let shadowSize = 6;
@ -90,25 +111,25 @@ function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptio
case TextStyle.MESSAGE: case TextStyle.MESSAGE:
case TextStyle.SETTINGS_LABEL: case TextStyle.SETTINGS_LABEL:
case TextStyle.SETTINGS_SELECTED: case TextStyle.SETTINGS_SELECTED:
styleOptions.fontSize = '96px'; styleOptions.fontSize = languageSettings[lang]?.summaryFontSize || '96px';
break; break;
case TextStyle.BATTLE_INFO: case TextStyle.BATTLE_INFO:
case TextStyle.MONEY: case TextStyle.MONEY:
case TextStyle.TOOLTIP_TITLE: case TextStyle.TOOLTIP_TITLE:
styleOptions.fontSize = '72px'; styleOptions.fontSize = languageSettings[lang]?.battleInfoFontSize || '72px';
shadowSize = 4.5; shadowSize = 4.5;
break; break;
case TextStyle.PARTY: case TextStyle.PARTY:
case TextStyle.PARTY_RED: case TextStyle.PARTY_RED:
styleOptions.fontSize = languageSettings[lang]?.partyFontSize || '66px';
styleOptions.fontFamily = 'pkmnems'; styleOptions.fontFamily = 'pkmnems';
styleOptions.fontSize = '66px';
break; break;
case TextStyle.TOOLTIP_CONTENT: case TextStyle.TOOLTIP_CONTENT:
styleOptions.fontSize = '64px'; styleOptions.fontSize = languageSettings[lang]?.tooltipContentFontSize || '64px';
shadowSize = 4; shadowSize = 4;
break; break;
case TextStyle.MOVE_INFO_CONTENT: case TextStyle.MOVE_INFO_CONTENT:
styleOptions.fontSize = '56px'; styleOptions.fontSize = languageSettings[lang]?.moveInfoFontSize || '56px';
shadowSize = 3; shadowSize = 3;
break; break;
} }