pokerogue/src/ui/ability-bar.ts
sirzento 01de9b9b58
[Feature] Added pokemon nicknames/renaming (#2570)
* Added basic temp renaming

* Made nickname persistant after reloading

* Localization and cancel button

* Fixed instant rename on active pokemon

* Small bugfix to prevent console errors

* Changed logic to use the new nickname field. Replaced most .name with getNameToRender() for display.

* Changed evolution message. Removed log messagesc

* Added localization keys for other languages

* Removed empty lines

* French translation

Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>

* Chinese translation

Co-authored-by: Yonmaru40 <47717431+40chyan@users.noreply.github.com>

* Portuguese (Brazil) translation

Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br>

* Korean translation

Co-authored-by: Enoch <enoch.jwsong@gmail.com>

* Update menu.ts

* Update menu.ts [Localization(it)]

* Changed most .getNameToRender() instance to getPokemonNameWithAffix()

* Changed wild encounter messages back to just use the name without affix.

* Added localization for the party ui rename selection

* Escaping nickname characters to support all characters

* Better Error handling

* Update src/field/pokemon.ts

Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>

---------

Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
Co-authored-by: Yonmaru40 <47717431+40chyan@users.noreply.github.com>
Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br>
Co-authored-by: Enoch <enoch.jwsong@gmail.com>
Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com>
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
2024-07-22 12:46:52 -04:00

102 lines
2.5 KiB
TypeScript

import { getPokemonNameWithAffix } from "#app/messages.js";
import BattleScene from "../battle-scene";
import Pokemon from "../field/pokemon";
import { TextStyle, addTextObject } from "./text";
import i18next from "i18next";
const hiddenX = -118;
const shownX = 0;
const baseY = -116;
export default class AbilityBar extends Phaser.GameObjects.Container {
private bg: Phaser.GameObjects.Image;
private abilityBarText: Phaser.GameObjects.Text;
private tween: Phaser.Tweens.Tween;
private autoHideTimer: NodeJS.Timeout;
public shown: boolean;
constructor(scene: BattleScene) {
super(scene, hiddenX, baseY);
}
setup(): void {
this.bg = this.scene.add.image(0, 0, "ability_bar_left");
this.bg.setOrigin(0, 0);
this.add(this.bg);
this.abilityBarText = addTextObject(this.scene, 15, 3, "", TextStyle.MESSAGE, { fontSize: "72px" });
this.abilityBarText.setOrigin(0, 0);
this.abilityBarText.setWordWrapWidth(600, true);
this.add(this.abilityBarText);
this.setVisible(false);
this.shown = false;
}
showAbility(pokemon: Pokemon, passive: boolean = false): void {
this.abilityBarText.setText(`${i18next.t("fightUiHandler:abilityFlyInText", { pokemonName: getPokemonNameWithAffix(pokemon), passive: passive ? i18next.t("fightUiHandler:passive") : "", abilityName: !passive ? pokemon.getAbility().name : pokemon.getPassiveAbility().name })}`);
if (this.shown) {
return;
}
(this.scene as BattleScene).fieldUI.bringToTop(this);
this.y = baseY + ((this.scene as BattleScene).currentBattle.double ? 14 : 0);
this.tween = this.scene.tweens.add({
targets: this,
x: shownX,
duration: 500,
ease: "Sine.easeOut",
onComplete: () => {
this.tween = null;
this.resetAutoHideTimer();
}
});
this.setVisible(true);
this.shown = true;
}
hide(): void {
if (!this.shown) {
return;
}
if (this.autoHideTimer) {
clearInterval(this.autoHideTimer);
}
if (this.tween) {
this.tween.stop();
}
this.tween = this.scene.tweens.add({
targets: this,
x: -91,
duration: 500,
ease: "Sine.easeIn",
onComplete: () => {
this.tween = null;
this.setVisible(false);
}
});
this.shown = false;
}
resetAutoHideTimer(): void {
if (this.autoHideTimer) {
clearInterval(this.autoHideTimer);
}
this.autoHideTimer = setTimeout(() => {
this.hide();
this.autoHideTimer = null;
}, 2500);
}
}