poker-html-client
Version:
HTML client for online poker
156 lines (136 loc) • 4.46 kB
text/typescript
import * as ko from "knockout";
import * as runtimeSettings from "../table/runtimesettings";
import { wait } from "./timedeferred";
export class SoundManager {
public enabled = ko.observable(false);
public tableSoundsEnabled = ko.observable(false);
public playFold() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/fold.mp3");
this.quickPlay("snd/fold_human.mp3");
}
public async playCheck() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
try {
await this.quickPlay("snd/check_loud.mp3");
await wait(200);
await this.quickPlay("snd/check_loud.mp3");
await wait(100);
await this.quickPlay("snd/check_human.mp3");
} catch (e) {
// tslint:disable-next-line:no-console
console.log(e);
}
}
public playCall() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/call.mp3");
this.quickPlay("snd/call_human.mp3");
}
public playBet() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/bet.mp3");
this.quickPlay("snd/bet_human.mp3");
}
public playRaise() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/raise.mp3");
this.quickPlay("snd/raise_human.mp3");
}
public playAllIn() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/allin.mp3");
this.quickPlay("snd/allin_human.mp3");
}
public playAllInCondition() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/allin.mp3");
}
public playWinChips() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/winchips.mp3");
}
public playTurnReminder() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/turnreminder.mp3");
}
public playTurnReminderForAll() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/turnreminder.mp3");
}
public playDealCards() {
if (!this.enabled() || !this.tableSoundsEnabled() || !runtimeSettings.sounds.dealCardsEnabled) {
return;
}
this.quickPlay("snd/shuffle.mp3");
}
public playFlop() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/flip_b.mp3");
}
public playFlopCards() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/flop.mp3");
}
public playTurn() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/turn.mp3");
}
public playRiver() {
if (!this.enabled() || !this.tableSoundsEnabled()) {
return;
}
this.quickPlay("snd/river.mp3");
}
private quickPlay(fileName: string) {
/* tslint:disable:no-string-literal */
if (window["Media"] != null) {
const platformPrefix = platformInfo.mediaRoot;
const media = new Media(platformPrefix + fileName, () => {
console.log("Playing audio completed");
media.release();
}, (err) => {
console.log("Playing audio failed. Error ", err);
media.release();
});
media.play();
}
if (window["Audio"] != null) {
return new Promise(function(resolve, reject) {
const audio = new Audio();
audio.preload = "auto";
audio.autoplay = true;
audio.onerror = reject;
audio.onended = resolve;
audio.src = fileName;
});
}
/* tslint:enable:no-string-literal */
}
}