From 19bb8c37597172a2b11bf3264ad4ffb3ca9c2501 Mon Sep 17 00:00:00 2001 From: PabloG02 Date: Wed, 24 Apr 2024 21:02:31 +0200 Subject: [PATCH] Reload ability localization when language is changed --- src/battle-scene.ts | 2 ++ src/data/ability.ts | 16 +++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 7cb92c451a9..3c869aaba87 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -21,6 +21,7 @@ import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesF import AbilityBar from './ui/ability-bar'; import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, applyAbAttrs, initAbilities } from './data/ability'; import { Abilities } from "./data/enums/abilities"; +import { allAbilities } from "./data/ability"; import Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle'; import { GameMode, GameModes, gameModes } from './game-mode'; import FieldSpritePipeline from './pipelines/field-sprite'; @@ -808,6 +809,7 @@ export default class BattleScene extends SceneBase { const localizable: Localizable[] = [ ...allSpecies, ...allMoves, + ...allAbilities, ...Utils.getEnumValues(ModifierPoolType).map(mpt => getModifierPoolForType(mpt)).map(mp => Object.values(mp).flat().map(mt => mt.modifierType).filter(mt => 'localize' in mt).map(lpb => lpb as unknown as Localizable)).flat() ]; for (let item of localizable) diff --git a/src/data/ability.ts b/src/data/ability.ts index eafaad1e5bd..dadce90bcd6 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -18,9 +18,9 @@ import { Moves } from "./enums/moves"; import { TerrainType } from "./terrain"; import { SpeciesFormChangeManualTrigger } from "./pokemon-forms"; import { Abilities } from "./enums/abilities"; -import i18next from "#app/plugins/i18n.js"; +import i18next, { Localizable } from "#app/plugins/i18n.js"; -export class Ability { +export class Ability implements Localizable { public id: Abilities; public name: string; public description: string; @@ -32,16 +32,18 @@ export class Ability { constructor(id: Abilities, generation: integer) { this.id = id; - - const i18nKey = Abilities[id].split('_').filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join('') as string; - - this.name = id ? i18next.t(`ability:${i18nKey}.name`) as string : ''; - this.description = id ? i18next.t(`ability:${i18nKey}.description`) as string : ''; this.generation = generation; this.attrs = []; this.conditions = []; } + localize(): void { + const i18nKey = Abilities[this.id].split('_').filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join('') as string; + + this.name = this.id ? i18next.t(`ability:${i18nKey}.name`) as string : ''; + this.description = this.id ? i18next.t(`ability:${i18nKey}.description`) as string : ''; + } + getAttrs(attrType: { new(...args: any[]): AbAttr }): AbAttr[] { return this.attrs.filter(a => a instanceof attrType); }