mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-10-21 12:35:59 +02:00
* Changed how non-BGM are loaded into the game + moved into directories * some leftovers * Apply suggestions from code review Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com> * Added setting for Field Volume + rewrote playSound() and updateSoundVolume() functions to reflect the new settings. * Main -> Beta (#3635) * Fixed issue with falsy issue within condition to get a stat for IV scanner * add fix setting code to prevent form/variant bug when default form/variant setting is wrong. in addition, that fix code include gender fix, so i revert old gender fix. update wrong log message. * [Hotfix] Fix Memory Mushroom not showing relearner moves (#3619) * Fix Memory Mushroom not showing relearner moves * Fix rollout test * Rewrite player faint logic in FaintPhase (#3614) * 867 runerigus sprite (#3629) cropped static frames, fixed cropped sprite set runerigus exp to use the shiny exp's animation verified all hex colors are unchanged - fixed ultra necrozma exp front variant swapped arrays. - xatu female eye color fix * [Bug] Preventing the MBH from being stolen in Endless (#3630) * Endless MBH Fix * add import * Revert "add import" This reverts commit814a4059c2
. * Revert "Endless MBH Fix" This reverts commit8eb4481301
. * removed newline --------- Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt> Co-authored-by: frutescens <info@laptop> * [Bug] Fix type-hints for immunity (#3620) * enable mock containers to be found by name * enable mock text to be found by name * add test coverage for type-hints Only for "immunity" and "status moves" * fix wrong message key of curse(ghost type) (#3631) Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt> * [Hotfix] Steal-able Mini Black Hole Pt 2 (#3632) * Still have no idea where Eternatus is given the MBH.... * typedocs --------- Co-authored-by: frutescens <info@laptop> * [Hotfix] Abilities that prevent ATK drops no longer stop other stat drops (#3624) * Abilities that prevent ATK drops no longer stop other stat drops * Apply suggestions from code review Co-authored-by: Mumble <kimjoanne@protonmail.com> * Add `isNullOrUndefined()` utility function --------- * Grip Claw now shows the proper pokemon nickname (#3634) Co-authored-by: frutescens <info@laptop> --------- Co-authored-by: Opaque02 <66582645+Opaque02@users.noreply.github.com> Co-authored-by: KimJeongSun <leo@atlaslabs.ai> Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt> Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> Co-authored-by: cam <lrlrliwoo@gmail.com> Co-authored-by: Mumble <kimjoanne@protonmail.com> Co-authored-by: frutescens <info@laptop> Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com> Co-authored-by: Enoch <enoch.jwsong@gmail.com> Co-authored-by: Mumble <171087428+frutescens@users.noreply.github.com> * [Bug] Preventing the MBH from being stolen in Endless (#3630) * Endless MBH Fix * add import * Revert "add import" This reverts commit814a4059c2
. * Revert "Endless MBH Fix" This reverts commit8eb4481301
. * removed newline --------- Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt> Co-authored-by: frutescens <info@laptop> * [Hotfix] Steal-able Mini Black Hole Pt 2 (#3632) * Still have no idea where Eternatus is given the MBH.... * typedocs --------- Co-authored-by: frutescens <info@laptop> * Deleted phases.ts (#3618) * Updated sound terms * Added space for localization * Update src/locales/ko/settings.ts Co-authored-by: Enoch <enoch.jwsong@gmail.com> * Update src/locales/zh_TW/settings.ts Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com> * Update src/locales/pt_BR/settings.ts Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br> * Update src/locales/zh_CN/settings.ts Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com> * Update src/locales/de/settings.ts Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> * Update src/locales/ko/settings.ts Co-authored-by: returntoice <dieandbecome@gmail.com> * Update src/locales/fr/settings.ts Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr> * Update src/locales/it/settings.ts Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com> * Include sound effects that were loaded in as BGM. * Removed stray placeholder localization --------- Co-authored-by: Frutescens <info@laptop> Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Opaque02 <66582645+Opaque02@users.noreply.github.com> Co-authored-by: KimJeongSun <leo@atlaslabs.ai> Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt> Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> Co-authored-by: cam <lrlrliwoo@gmail.com> Co-authored-by: Enoch <enoch.jwsong@gmail.com> Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com> Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br> Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Co-authored-by: returntoice <dieandbecome@gmail.com> Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr> Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com>
132 lines
3.7 KiB
TypeScript
132 lines
3.7 KiB
TypeScript
import BattleScene, { starterColors } from "../battle-scene";
|
|
import { TextStyle, addTextObject } from "./text";
|
|
import { argbFromRgba } from "@material/material-color-utilities";
|
|
import * as Utils from "../utils";
|
|
import { Species } from "#enums/species";
|
|
|
|
export default class CandyBar extends Phaser.GameObjects.Container {
|
|
private bg: Phaser.GameObjects.NineSlice;
|
|
private candyIcon: Phaser.GameObjects.Sprite;
|
|
private candyOverlayIcon: Phaser.GameObjects.Sprite;
|
|
private countText: Phaser.GameObjects.Text;
|
|
private speciesId: Species;
|
|
|
|
private tween: Phaser.Tweens.Tween | null;
|
|
private autoHideTimer: NodeJS.Timeout | null;
|
|
|
|
public shown: boolean;
|
|
|
|
constructor(scene: BattleScene) {
|
|
super(scene, (scene.game.canvas.width / 6), -((scene.game.canvas.height) / 6) + 15);
|
|
}
|
|
|
|
setup(): void {
|
|
this.bg = this.scene.add.nineslice(0, 0, "party_exp_bar", undefined, 8, 18, 21, 5, 6, 4);
|
|
this.bg.setOrigin(0, 0);
|
|
|
|
this.add(this.bg);
|
|
|
|
this.candyIcon = this.scene.add.sprite(14, 0, "items", "candy");
|
|
this.candyIcon.setOrigin(0.5, 0);
|
|
this.candyIcon.setScale(0.5);
|
|
|
|
this.add(this.candyIcon);
|
|
|
|
this.candyOverlayIcon = this.scene.add.sprite(14, 0, "items", "candy_overlay");
|
|
this.candyOverlayIcon.setOrigin(0.5, 0);
|
|
this.candyOverlayIcon.setScale(0.5);
|
|
|
|
this.add(this.candyOverlayIcon);
|
|
|
|
this.countText = addTextObject(this.scene, 22, 4, "", TextStyle.BATTLE_INFO);
|
|
this.countText.setOrigin(0, 0);
|
|
this.add(this.countText);
|
|
|
|
this.setVisible(false);
|
|
this.shown = false;
|
|
}
|
|
|
|
showStarterSpeciesCandy(starterSpeciesId: Species, count: integer): Promise<void> {
|
|
return new Promise<void>(resolve => {
|
|
if (this.shown) {
|
|
if (this.speciesId === starterSpeciesId) {
|
|
return resolve();
|
|
} else {
|
|
return this.hide().then(() => this.showStarterSpeciesCandy(starterSpeciesId, count)).then(() => resolve());
|
|
}
|
|
}
|
|
|
|
const colorScheme = starterColors[starterSpeciesId];
|
|
|
|
this.candyIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[0])));
|
|
this.candyOverlayIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1])));
|
|
|
|
this.countText.setText(`${(this.scene as BattleScene).gameData.starterData[starterSpeciesId].candyCount + count} (+${count.toString()})`);
|
|
|
|
this.bg.width = this.countText.displayWidth + 28;
|
|
|
|
(this.scene as BattleScene).fieldUI.bringToTop(this);
|
|
|
|
if (this.tween) {
|
|
this.tween.stop();
|
|
}
|
|
|
|
(this.scene as BattleScene).playSound("se/shing");
|
|
|
|
this.tween = this.scene.tweens.add({
|
|
targets: this,
|
|
x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5),
|
|
duration: 500,
|
|
ease: "Sine.easeOut",
|
|
onComplete: () => {
|
|
this.tween = null;
|
|
this.resetAutoHideTimer();
|
|
resolve();
|
|
}
|
|
});
|
|
|
|
this.setVisible(true);
|
|
this.shown = true;
|
|
});
|
|
}
|
|
|
|
hide(): Promise<void> {
|
|
return new Promise<void>(resolve => {
|
|
if (!this.shown) {
|
|
return resolve();
|
|
}
|
|
|
|
if (this.autoHideTimer) {
|
|
clearInterval(this.autoHideTimer);
|
|
}
|
|
|
|
if (this.tween) {
|
|
this.tween.stop();
|
|
}
|
|
|
|
this.tween = this.scene.tweens.add({
|
|
targets: this,
|
|
x: (this.scene.game.canvas.width / 6),
|
|
duration: 500,
|
|
ease: "Sine.easeIn",
|
|
onComplete: () => {
|
|
this.tween = null;
|
|
this.shown = false;
|
|
this.setVisible(false);
|
|
resolve();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
resetAutoHideTimer(): void {
|
|
if (this.autoHideTimer) {
|
|
clearInterval(this.autoHideTimer);
|
|
}
|
|
this.autoHideTimer = setTimeout(() => {
|
|
this.hide();
|
|
this.autoHideTimer = null;
|
|
}, 2500);
|
|
}
|
|
}
|