Adjust game volume

pull/2/head
Flashfyre 2023-10-21 08:58:39 -04:00
parent c2cb433409
commit 96a15ccb0d
13 changed files with 62 additions and 49 deletions

View File

@ -98,7 +98,7 @@ export class SelectStarterPhase extends BattlePhase {
start() {
super.start();
this.scene.sound.play('menu', { loop: true });
this.scene.playSound('menu', { loop: true });
this.scene.ui.setMode(Mode.STARTER_SELECT, (starters: Starter[]) => {
const party = this.scene.getParty();
@ -619,7 +619,7 @@ export class SummonPhase extends PartyMemberPokemonPhase {
angle: 1440,
y: (this.player ? 132 : 86) + fpOffset[1],
onComplete: () => {
this.scene.sound.play('pb_rel');
this.scene.playSound('pb_rel');
pokeball.destroy();
this.scene.add.existing(pokemon);
this.scene.field.add(pokemon);
@ -701,7 +701,7 @@ export class SwitchSummonPhase extends SummonPhase {
this.scene.getEnemyField().forEach(enemyPokemon => enemyPokemon.removeTagsBySourceId(pokemon.id));
this.scene.ui.showText(this.player ? `Come back, ${pokemon.name}!` : `${this.scene.currentBattle.trainer.getName()}\nwithdrew ${pokemon.name}!`);
this.scene.sound.play('pb_rel');
this.scene.playSound('pb_rel');
pokemon.hideInfo();
pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, 'Sine.easeIn');
this.scene.tweens.add({
@ -1708,7 +1708,7 @@ export class StatChangePhase extends PokemonPhase {
statSprite.setScale(6);
statSprite.setOrigin(0.5, 1);
this.scene.sound.play(`stat_${this.levels >= 1 ? 'up' : 'down'}`);
this.scene.playSound(`stat_${this.levels >= 1 ? 'up' : 'down'}`);
statSprite.setMask(new Phaser.Display.Masks.BitmapMask(this.scene, pokemonMaskSprite));
@ -1904,13 +1904,13 @@ export class DamagePhase extends PokemonPhase {
switch (this.damageResult) {
case HitResult.EFFECTIVE:
this.scene.sound.play('hit');
this.scene.playSound('hit');
break;
case HitResult.SUPER_EFFECTIVE:
this.scene.sound.play('hit_strong');
this.scene.playSound('hit_strong');
break;
case HitResult.NOT_VERY_EFFECTIVE:
this.scene.sound.play('hit_weak');
this.scene.playSound('hit_weak');
break;
}
@ -1974,7 +1974,7 @@ export class FaintPhase extends PokemonPhase {
pokemon.faintCry(() => {
pokemon.hideInfo();
this.scene.sound.play('faint');
this.scene.playSound('faint');
this.scene.tweens.add({
targets: pokemon,
duration: 500,
@ -2189,7 +2189,7 @@ export class UnlockPhase extends BattlePhase {
this.scene.time.delayedCall(2000, () => {
this.scene.gameData.unlocks[this.unlockable] = true;
this.scene.gameData.saveSystem();
this.scene.sound.play('level_up_fanfare');
this.scene.playSound('level_up_fanfare');
this.scene.ui.setMode(Mode.MESSAGE);
this.scene.arenaBg.setVisible(false);
this.scene.ui.fadeIn(250).then(() => {
@ -2536,7 +2536,7 @@ export class AttemptCapturePhase extends PokemonPhase {
this.pokeball.setOrigin(0.5, 0.625);
this.scene.field.add(this.pokeball);
this.scene.sound.play('pb_throw');
this.scene.playSound('pb_throw');
this.scene.time.delayedCall(300, () => {
this.scene.field.moveBelow(this.pokeball as Phaser.GameObjects.GameObject, pokemon);
});
@ -2548,7 +2548,7 @@ export class AttemptCapturePhase extends PokemonPhase {
onComplete: () => {
this.pokeball.setTexture('pb', `${pokeballAtlasKey}_opening`);
this.scene.time.delayedCall(17, () => this.pokeball.setTexture('pb', `${pokeballAtlasKey}_open`));
this.scene.sound.play('pb_rel');
this.scene.playSound('pb_rel');
pokemon.tint(getPokeballTintColor(this.pokeballType));
this.scene.tweens.add({
targets: pokemon,
@ -2559,7 +2559,7 @@ export class AttemptCapturePhase extends PokemonPhase {
onComplete: () => {
this.pokeball.setTexture('pb', `${pokeballAtlasKey}_opening`);
pokemon.setVisible(false);
this.scene.sound.play('pb_catch');
this.scene.playSound('pb_catch');
this.scene.time.delayedCall(17, () => this.pokeball.setTexture('pb', `${pokeballAtlasKey}`));
const doShake = pokeballMultiplier > -1 ? () => {
@ -2587,13 +2587,13 @@ export class AttemptCapturePhase extends PokemonPhase {
this.failCatch(shakeCount);
} else if (shakeCount++ < 3) {
if (Utils.randInt(65536) < y)
this.scene.sound.play('pb_move');
this.scene.playSound('pb_move');
else {
shakeCounter.stop();
this.failCatch(shakeCount);
}
} else
this.scene.sound.play('pb_lock')
this.scene.playSound('pb_lock')
},
onComplete: () => this.catch()
});
@ -2609,7 +2609,7 @@ export class AttemptCapturePhase extends PokemonPhase {
failCatch(shakeCount: integer) {
const pokemon = this.getPokemon();
this.scene.sound.play('pb_rel');
this.scene.playSound('pb_rel');
pokemon.setY(this.originalY);
pokemon.cry();
pokemon.tint(getPokeballTintColor(this.pokeballType));
@ -2713,7 +2713,7 @@ export class AttemptRunPhase extends PokemonPhase {
const escapeChance = (((playerPokemon.stats[Stat.SPD] * 128) / enemySpeed) + (30 * this.scene.currentBattle.escapeAttempts++)) % 256;
if (Utils.randInt(256) < escapeChance) {
this.scene.sound.play('flee');
this.scene.playSound('flee');
this.scene.queueMessage('You got away safely!', null, true, 500);
this.scene.tweens.add({
@ -2838,7 +2838,7 @@ export class PartyHealPhase extends BattlePhase {
pokemon.updateInfo(true);
}
const healSong = this.scene.sound.add('heal');
healSong.play();
healSong.play({ volume: this.scene.gameVolume });
this.scene.time.delayedCall(healSong.totalDuration * 1000, () => {
healSong.destroy();
if (this.resumeBgm && bgmPlaying)

View File

@ -59,10 +59,11 @@ export interface PokeballCounts {
export default class BattleScene extends Phaser.Scene {
public auto: boolean;
public gameVolume: number = 0.5;
public gameSpeed: integer = 1;
public quickStart: boolean = quickStart;
public finalWave: integer = 200;
public gameData: GameData;
private phaseQueue: BattlePhase[];
@ -811,7 +812,7 @@ export default class BattleScene extends Phaser.Scene {
if (this.bgm && bgmName === this.bgm.key) {
if (!this.bgm.isPlaying) {
this.bgm.play({
volume: 1
volume: this.gameVolume
});
}
return;
@ -827,14 +828,16 @@ export default class BattleScene extends Phaser.Scene {
const playNewBgm = () => {
if (bgmName === null && this.bgm && !this.bgm.pendingRemove) {
this.bgm.play({
volume: 1
volume: this.gameVolume
});
return;
}
if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPlaying)
this.bgm.stop();
this.bgm = this.sound.add(bgmName, { loop: true });
this.bgm.play();
this.bgm.play({
volume: this.gameVolume
});
if (loopPoint)
this.bgm.on('looped', () => this.bgm.play({ seek: loopPoint }));
};
@ -875,9 +878,20 @@ export default class BattleScene extends Phaser.Scene {
SoundFade.fadeOut(this, bgm, duration, destroy);
}
playSound(soundName: string, config?: object) {
if (config) {
if (config.hasOwnProperty('volume'))
config['volume'] *= this.gameVolume;
else
config['volume'] = this.gameVolume;
} else
config = { volume: this.gameVolume };
this.sound.play(soundName, config);
}
playSoundWithoutBgm(soundName: string, pauseDuration?: integer): void {
this.pauseBgm();
this.sound.play(soundName);
this.playSound(soundName);
const sound = this.sound.get(soundName);
if (this.bgmResumeTimer)
this.bgmResumeTimer.destroy();
@ -976,7 +990,7 @@ export default class BattleScene extends Phaser.Scene {
if (modifier instanceof PersistentModifier) {
if ((modifier as PersistentModifier).add(this.modifiers, !!virtual)) {
if (playSound && !this.sound.get(soundName))
this.sound.play(soundName);
this.playSound(soundName);
} else if (!virtual) {
const defaultModifierType = getDefaultModifierTypeForTier(modifier.type.tier);
this.addModifier(defaultModifierType.newModifier(), playSound).then(() => resolve());
@ -988,7 +1002,7 @@ export default class BattleScene extends Phaser.Scene {
this.updateModifiers().then(() => resolve());
} else if (modifier instanceof ConsumableModifier) {
if (playSound && !this.sound.get(soundName))
this.sound.play(soundName);
this.playSound(soundName);
if (modifier instanceof ConsumablePokemonModifier) {
for (let p in this.party) {

View File

@ -236,7 +236,7 @@ class AnimTimedSoundEvent extends AnimTimedEvent {
const soundConfig = { rate: (this.pitch * 0.01), volume: (this.volume * 0.01) };
if (this.resourceName) {
try {
scene.sound.play(this.resourceName, soundConfig);
scene.playSound(this.resourceName, soundConfig);
} catch (err) {
console.error(err);
}

View File

@ -88,7 +88,7 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb
duration: bouncePower * baseBounceDuration,
ease: 'Cubic.easeIn',
onComplete: () => {
scene.sound.play('pb_bounce_1', { volume: bouncePower });
scene.playSound('pb_bounce_1', { volume: bouncePower });
bouncePower = bouncePower > 0.01 ? bouncePower * 0.5 : 0;

View File

@ -184,7 +184,7 @@ export abstract class PokemonSpeciesForm {
}
cry(scene: BattleScene, soundConfig?: Phaser.Types.Sound.SoundConfig): integer {
scene.sound.play(this.speciesId.toString(), soundConfig);
scene.playSound(this.speciesId.toString(), soundConfig);
return scene.sound.get(this.speciesId.toString()).totalDuration * 1000;
}
}

View File

@ -102,7 +102,7 @@ export class EvolutionPhase extends BattlePhase {
this.scene.time.delayedCall(1000, () => {
const evolutionBgm = this.scene.sound.add('evolution');
evolutionBgm.play();
evolutionBgm.play({ volume: this.scene.gameVolume });
this.scene.tweens.add({
targets: this.evolutionBgOverlay,
alpha: 1,
@ -119,7 +119,7 @@ export class EvolutionPhase extends BattlePhase {
this.evolutionBg.setVisible(true);
this.evolutionBg.play();
});
this.scene.sound.play('charge');
this.scene.playSound('charge');
this.doSpiralUpward();
this.scene.tweens.addCounter({
from: 0,
@ -131,17 +131,17 @@ export class EvolutionPhase extends BattlePhase {
onComplete: () => {
this.pokemonSprite.setVisible(false);
this.scene.time.delayedCall(1100, () => {
this.scene.sound.play('beam');
this.scene.playSound('beam');
this.doArcDownward();
this.scene.time.delayedCall(1500, () => {
this.pokemonEvoTintSprite.setScale(0.25);
this.pokemonEvoTintSprite.setVisible(true);
this.doCycle(1).then(() => {
this.scene.sound.play('sparkle');
this.scene.playSound('sparkle');
this.pokemonEvoSprite.setVisible(true);
this.doCircleInward();
this.scene.time.delayedCall(900, () => {
this.scene.sound.play('shine');
this.scene.playSound('shine');
this.doSpray();
this.scene.tweens.add({
targets: this.evolutionOverlay,
@ -167,7 +167,7 @@ export class EvolutionPhase extends BattlePhase {
this.scene.time.delayedCall(250, () => {
pokemon.cry();
this.scene.time.delayedCall(1250, () => {
this.scene.sound.play('evolution_fanfare');
this.scene.playSound('evolution_fanfare');
this.scene.ui.showText(`Congratulations! Your ${preName}\nevolved into ${pokemon.name}!`, null, () => this.end(), null, true, 3000);
this.scene.time.delayedCall(new Utils.FixedInt(4250) as unknown as integer, () => this.scene.playBgm());
});

View File

@ -874,9 +874,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const key = this.species.speciesId.toString();
let i = 0;
let rate = 0.85;
this.scene.sound.play(key, {
rate: rate
});
this.scene.playSound(key, { rate: rate });
const sprite = this.getSprite();
const tintSprite = this.getTintSprite();
const delay = Math.max(this.scene.sound.get(key).totalDuration * 50, 25);
@ -903,7 +901,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
rate *= 0.99;
crySound.play({
rate: rate,
seek: (i * delay * 0.001) * rate
seek: (i * delay * 0.001) * rate,
volume: this.scene.gameVolume
});
}
else {
@ -1060,7 +1059,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
sparkle(): void {
if (this.shinySparkle) {
this.shinySparkle.play('sparkle');
this.scene.sound.play('sparkle');
this.scene.playSound('sparkle');
}
}

View File

@ -273,7 +273,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
}
let duration = this.visible && !instant ? ((levelExp - this.lastLevelExp) / relLevelExp) * 1650 : 0;
if (duration)
this.scene.sound.play('exp');
(this.scene as BattleScene).playSound('exp');
this.scene.tweens.add({
targets: this.expBar,
ease: 'Sine.easeIn',
@ -289,7 +289,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
if (ratio === 1) {
this.lastLevelExp = 0;
this.lastLevel++;
this.scene.sound.play('level_up');
(this.scene as BattleScene).playSound('level_up');
this.setLevel(this.lastLevel);
this.scene.time.delayedCall(500, () => {
this.expBar.setScale(0, 1);

View File

@ -72,7 +72,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler {
this.message.setText(text.slice(0, charIndex));
const advance = () => {
if (charSound)
this.scene.sound.play(charSound);
this.scene.playSound(charSound);
if (callback && !this.textTimer.repeatCount) {
if (callbackDelay && !prompt) {
this.textCallbackTimer = this.scene.time.delayedCall(callbackDelay, () => {

View File

@ -313,7 +313,7 @@ class ModifierOption extends Phaser.GameObjects.Container {
return;
const value = t.getValue();
if (!bounce && value > lastValue) {
this.scene.sound.play('pb_bounce_1', { volume: 1 / ++bounceCount });
(this.scene as BattleScene).playSound('pb_bounce_1', { volume: 1 / ++bounceCount });
bounce = true;
} else if (bounce && value < lastValue)
bounce = false;
@ -323,7 +323,7 @@ class ModifierOption extends Phaser.GameObjects.Container {
if (this.modifierTypeOption.upgraded) {
this.scene.time.delayedCall(remainingDuration, () => {
this.scene.sound.play('upgrade');
(this.scene as BattleScene).playSound('upgrade');
this.pbTint.setPosition(this.pb.x, this.pb.y);
this.pbTint.setTintFill(0xFFFFFF);
this.pbTint.setAlpha(0);
@ -354,7 +354,7 @@ class ModifierOption extends Phaser.GameObjects.Container {
return;
this.pb.setTexture('pb', `${this.getPbAtlasKey(false)}_open`);
this.scene.sound.play('pb_rel');
(this.scene as BattleScene).playSound('pb_rel');
this.scene.tweens.add({
targets: this.pb,

View File

@ -55,7 +55,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container {
ball.setFrame(ballFrame);
});
this.scene.sound.play('pb_tray_enter');
(this.scene as BattleScene).playSound('pb_tray_enter');
this.scene.tweens.add({
targets: this,
@ -69,7 +69,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container {
x: `${this.player ? '-' : '+'}=104`,
duration: b * 100,
ease: 'Sine.easeIn',
onComplete: () => this.scene.sound.play(b < party.length ? 'pb_tray_ball' : 'pb_tray_empty')
onComplete: () => (this.scene as BattleScene).playSound(b < party.length ? 'pb_tray_ball' : 'pb_tray_empty')
});
});
}

View File

@ -325,7 +325,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (this.canCycleShiny) {
this.setSpeciesDetails(this.lastSpecies, !this.shinyCursor, undefined, undefined, undefined);
if (this.shinyCursor)
this.scene.sound.play('sparkle');
this.scene.playSound('sparkle');
else
success = true;
}

View File

@ -129,11 +129,11 @@ export default class UI extends Phaser.GameObjects.Container {
}
playSelect(): void {
this.scene.sound.play('select');
(this.scene as BattleScene).playSound('select');
}
playError(): void {
this.scene.sound.play('error');
(this.scene as BattleScene).playSound('error');
}
fadeOut(duration: integer): Promise<void> {