feat(videopoker): add 8-bit sound effects and update audio playback

- Load new 8-bit style sound assets (card deal, card show, casino win/lose)
- Replace SFX enum-based sound calls with direct sound key playback
- Use 8-bit sounds for card interactions and win/lose feedback in VideoPokerGame
This commit is contained in:
Brian Fertig 2026-06-06 18:13:06 -06:00
parent 246d60e2a9
commit 97edebab55
2 changed files with 9 additions and 5 deletions

View File

@ -409,7 +409,7 @@ export default class VideoPokerGame extends Phaser.Scene {
onSlotClicked(i) { onSlotClicked(i) {
if (this.busy || this.state.phase !== 'draw') return; if (this.busy || this.state.phase !== 'draw') return;
toggleHold(this.state, i); toggleHold(this.state, i);
playSound(this, SFX.CARD_SHOW); this.sound.play('sfx-card-show-8bit');
this.heldTags[i].setVisible(this.state.held[i]); this.heldTags[i].setVisible(this.state.held[i]);
// Subtle lift to show the hold. // Subtle lift to show the hold.
this.tweens.add({ targets: this.cardObjs[i], y: this.state.held[i] ? this.slotY - 14 : this.slotY, duration: 120 }); this.tweens.add({ targets: this.cardObjs[i], y: this.state.held[i] ? this.slotY - 14 : this.slotY, duration: 120 });
@ -447,7 +447,7 @@ export default class VideoPokerGame extends Phaser.Scene {
this.busy = false; this.busy = false;
}; };
if (replaced.length === 0) { finish(); return; } if (replaced.length === 0) { finish(); return; }
playSound(this, SFX.CARD_DEAL); this.sound.play('sfx-card-deal-8bit');
this.dealSequence(replaced, finish); this.dealSequence(replaced, finish);
} }
@ -461,7 +461,7 @@ export default class VideoPokerGame extends Phaser.Scene {
const cont = this.cardObjs[i]; const cont = this.cardObjs[i];
cont.setScale(1, 0); cont.setScale(1, 0);
this.renderCard(i, card, true); this.renderCard(i, card, true);
playSound(this, SFX.CARD_DEAL); this.sound.play('sfx-card-deal-8bit');
this.tweens.add({ this.tweens.add({
targets: cont, scaleY: 1, duration: 110, ease: 'Quad.out', targets: cont, scaleY: 1, duration: 110, ease: 'Quad.out',
onComplete: () => this.time.delayedCall(40, next), onComplete: () => this.time.delayedCall(40, next),
@ -482,11 +482,11 @@ export default class VideoPokerGame extends Phaser.Scene {
this.sessionNet += win.coinsWon; this.sessionNet += win.coinsWon;
this.refreshMeters(); this.refreshMeters();
this.setStatus(`${win.name.toUpperCase()} — WIN ${win.coinsWon}`, CRT.phosphorHex); this.setStatus(`${win.name.toUpperCase()} — WIN ${win.coinsWon}`, CRT.phosphorHex);
playSound(this, win.coinsWon >= 50 ? SFX.COINS : SFX.CASINO_WIN); playSound(this, win.coinsWon >= 50 ? SFX.COINS : 'sfx-casino-win-8bit');
this.recordHistory('win'); this.recordHistory('win');
} else { } else {
this.setStatus('GAME OVER — NO WIN', CRT.heldHex); this.setStatus('GAME OVER — NO WIN', CRT.heldHex);
playSound(this, SFX.CASINO_LOSE); this.sound.play('sfx-casino-lose-8bit');
this.recordHistory('loss'); this.recordHistory('loss');
} }
// Persist the net change to the shared bankroll after each hand. // Persist the net change to the shared bankroll after each hand.

View File

@ -65,14 +65,18 @@ export default class PreloadScene extends Phaser.Scene {
this.load.audio('sfx-water-raise', '/assets/fx/water-raise.mp3'); this.load.audio('sfx-water-raise', '/assets/fx/water-raise.mp3');
this.load.audio('sfx-water-dry', '/assets/fx/water-dry.mp3'); this.load.audio('sfx-water-dry', '/assets/fx/water-dry.mp3');
this.load.audio('sfx-card-deal', '/assets/fx/card-deal.mp3'); this.load.audio('sfx-card-deal', '/assets/fx/card-deal.mp3');
this.load.audio('sfx-card-deal-8bit', '/assets/fx/8bit-card.mp3');
this.load.audio('sfx-card-place', '/assets/fx/card-place.mp3'); this.load.audio('sfx-card-place', '/assets/fx/card-place.mp3');
this.load.audio('sfx-card-show', '/assets/fx/card-show.mp3'); this.load.audio('sfx-card-show', '/assets/fx/card-show.mp3');
this.load.audio('sfx-card-show-8bit', '/assets/fx/8bit-select.mp3');
this.load.audio('sfx-card-shuffle', '/assets/fx/card-shuffle.mp3'); this.load.audio('sfx-card-shuffle', '/assets/fx/card-shuffle.mp3');
this.load.audio('sfx-coins', '/assets/fx/coins.mp3'); this.load.audio('sfx-coins', '/assets/fx/coins.mp3');
this.load.audio('sfx-purchase', '/assets/fx/purchase.mp3'); this.load.audio('sfx-purchase', '/assets/fx/purchase.mp3');
this.load.audio('sfx-casino-blackjack', '/assets/fx/casino-blackjack.mp3'); this.load.audio('sfx-casino-blackjack', '/assets/fx/casino-blackjack.mp3');
this.load.audio('sfx-casino-lose', '/assets/fx/casino-lose.mp3'); this.load.audio('sfx-casino-lose', '/assets/fx/casino-lose.mp3');
this.load.audio('sfx-casino-lose-8bit', '/assets/fx/8bit-lose.mp3');
this.load.audio('sfx-casino-win', '/assets/fx/casino-win.mp3'); this.load.audio('sfx-casino-win', '/assets/fx/casino-win.mp3');
this.load.audio('sfx-casino-win-8bit', '/assets/fx/8bit-win.mp3');
this.load.audio('sfx-chip-bet', '/assets/fx/chip-bet.mp3'); this.load.audio('sfx-chip-bet', '/assets/fx/chip-bet.mp3');
this.load.audio('sfx-dice-roll', '/assets/fx/dice-roll.mp3'); this.load.audio('sfx-dice-roll', '/assets/fx/dice-roll.mp3');
this.load.audio('sfx-bingo-balls', '/assets/fx/bingo-balls.mp3'); this.load.audio('sfx-bingo-balls', '/assets/fx/bingo-balls.mp3');