Files
monkeygg2.github.io/games/planet-life/sound.js
T
2023-08-25 13:31:04 +05:30

212 lines
5.0 KiB
JavaScript

var audioSettings = {
meiThresholdComplete: false,
isMusicMuted: false,
isSFXMuted: false,
shouldPlayMusic: false,
isBattleMusic: false,
sfxPlayers: null,
musicPlayer: null,
battlePlayer: null,
};
// map sounds to files (filename minus directory and .mp3)
var soundEffect = {
slotMachine: "InsertCoin",
win: "Win",
loose: "Lose",
buy: "Purchase",
explosion: "Explosion",
click: "pop-low",
cheer: "Cheer",
cry: "Cry",
derek: "Derek",
beating: "Arrr",
beating2: "Arrr2",
beating3: "Arrr3",
beating4: "Arrr4",
beating5: "Arrr5",
punch1: "Punch1",
punch2: "Punch2",
punch3: "Punch3",
punch4: "Punch1",
text: "5",
burger: "Burger",
worm: "Worm",
wormHole: "Wormhole",
sven: "Sven",
burgulon: "Burgulon",
wifyHello: "WifyHello",
wifyWrong: "WifyWrong",
wifyCorrect: "WifyCorrect",
fart: "Fart",
ghost: "Ghost",
heal: "Heal",
potion: "Potion",
thirsty: "Thirsty",
vomit: "Vomit",
doorOfRegret: "DoorOfRegret",
party: "Party",
hi: "Hi",
baby: "Baby",
babyCry: "BabyCry",
ding: "Ding",
heavy: "Heavy",
house: "House",
jack: "Jack",
jazz: "Jazz",
jerkSquad: "JerkSquad",
shock: "Shock",
stanley: "Stanley",
tadaa: "Tadaa",
techno: "Techno",
canOpen: "CanOpen",
core: "Core",
beanie: "Beanie",
mouladin: "Mouladin",
slopnax: "Slopnax",
bentLords: "BentLords",
technoLow: "TechnoLow",
mayonada: "Mayonada",
};
function loadAudioState() {
audioSettings.isSFXMuted = state.soundMuted;
audioSettings.isMusicMuted = state.musicMuted;
}
function playSound(filename) {
if (audioSettings.isSFXMuted) { return; }
// First interaction with DOM has not yet happened
if (!audioSettings.meiThresholdComplete) { return; }
if (audioSettings.sfxPlayers === null) {
audioSettings.sfxPlayers = {};
for (var key in soundEffect) {
if (soundEffect.hasOwnProperty(key)) {
let value = soundEffect[key];
audioSettings.sfxPlayers[value] = new Audio("audio/" + value + ".mp3");
}
}
}
audioSettings.sfxPlayers[filename].play();
}
function playBattleMusic() {
if (audioSettings.isMusicMuted) { return; }
if (!audioSettings.shouldPlayMusic) { return; }
// First interaction with DOM has not yet happened
if (!audioSettings.meiThresholdComplete) { return; }
audioSettings.isBattleMusic = true;
if (audioSettings.battlePlayer === null) {
audioSettings.battlePlayer = new Audio("audio/Honk_DereksTheme.mp3");
audioSettings.battlePlayer.addEventListener("ended", function () {
if (audioSettings.isMusicMuted || !audioSettings.isBattleMusic) { return; }
audioSettings.battlePlayer.currentTime = 0;
audioSettings.battlePlayer.play();
});
}
if (audioSettings.musicPlayer !== null) {
audioSettings.musicPlayer.pause();
}
if (audioSettings.battlePlayer !== null) {
audioSettings.battlePlayer.play();
}
}
function playMusic() {
if (audioSettings.isMusicMuted) { return; }
if (!audioSettings.shouldPlayMusic) { return; }
// First interaction with DOM has not yet happened
if (!audioSettings.meiThresholdComplete) { return; }
audioSettings.isBattleMusic = false;
if (audioSettings.musicPlayer === null) {
audioSettings.musicPlayer = new Audio("audio/rumsang_v2.mp3");;
audioSettings.musicPlayer.addEventListener("ended", function () {
if (audioSettings.isMusicMuted || audioSettings.isBattleMusic) { return; }
audioSettings.musicPlayer.currentTime = 0;
audioSettings.musicPlayer.play();
});
audioSettings.musicPlayer.play();
}
if (audioSettings.battlePlayer !== null) {
audioSettings.battlePlayer.pause();
}
if (audioSettings.musicPlayer !== null) {
audioSettings.musicPlayer.play();
}
}
function resetMusic() {
if (audioSettings.isMusicMuted) { return; }
if (audioSettings.musicPlayer !== null) {
audioSettings.musicPlayer.pause();
audioSettings.musicPlayer.currentTime = 0;
}
if (audioSettings.battlePlayer !== null) {
audioSettings.battlePlayer.pause();
audioSettings.battlePlayer.currentTime = 0;
}
}
function muteSound() {
audioSettings.isSFXMuted = true;
updateState("soundMuted", true);
for (var key in audioSettings.sfxPlayers) {
if (audioSettings.sfxPlayers.hasOwnProperty(key)) {
audioSettings.sfxPlayers[key].pause();
}
}
}
function unMuteSound() {
audioSettings.isSFXMuted = false;
updateState("soundMuted", false);
}
function muteMusic() {
audioSettings.isMusicMuted = true;
updateState("musicMuted", true);
if (audioSettings.musicPlayer !== null) {
audioSettings.musicPlayer.pause();
}
if (audioSettings.battlePlayer !== null) {
audioSettings.battlePlayer.pause();
}
}
function unMuteMusic() {
audioSettings.isMusicMuted = false;
updateState("musicMuted", false);
playMusic();
}
function playRandomPunchSound() {
var punches = [soundEffect.punch1,soundEffect.punch2,soundEffect.punch3];
var chosenPunch = Math.floor(Math.random() * punches.length);
playSound(punches[chosenPunch]);
}
function playRandomDerekSound() {
var punches = [soundEffect.beating,soundEffect.beating2,soundEffect.beating3,soundEffect.beating4,soundEffect.beating5];
var chosenPunch = Math.floor(Math.random() * punches.length);
playSound(punches[chosenPunch]);
}