assassin-bug/framework/ui/menu/sound-manager.js

85 lines
2.5 KiB
JavaScript
Raw Normal View History

2022-11-26 01:22:02 +00:00
export class SoundManager {
constructor(soundSet = null) {
this.soundSet = null;
this.data = new Map();
this.soundSet = soundSet;
}
setSoundSet(soundSet) {
this.soundSet = soundSet;
}
handleSound(type, data = null) {
switch (type) {
case 'edit':
this.handleEditSound(data);
break;
case 'slider':
this.handleSliderSound(data);
break;
case 'selector':
this.handleSelectorSound(data);
break;
case 'checkbox':
this.handleCheckboxSound(data);
break;
case 'focus':
this.handleFocusSound();
break;
case 'choose':
this.handleChooseSound();
break;
case 'open':
this.handleOpenSound();
break;
case 'close':
this.handleCloseSound();
break;
default:
return;
break;
}
}
handleEditSound(data) {
const prevData = this.data.get('edit') || '';
if (data.length <= prevData.length) {
this.soundSet.delete && this.soundSet.delete.play();
}
else {
this.soundSet.char && this.soundSet.char.play();
}
this.data.set('edit', data);
}
handleSelectorSound(data) {
this.soundSet.scroller && this.soundSet.scroller.play();
}
handleSliderSound(data) {
const prevData = this.data.get('slider');
if (data < prevData) {
this.soundSet.sliderLeft && this.soundSet.sliderLeft.play();
}
else {
this.soundSet.sliderRight && this.soundSet.sliderRight.play();
}
this.data.set('slider', data);
}
handleFocusSound() {
this.soundSet.move && this.soundSet.move.play();
}
handleOpenSound() {
this.soundSet.open && this.soundSet.open.play();
}
handleCloseSound() {
this.soundSet.close && this.soundSet.close.play();
}
handleChooseSound() {
this.soundSet.choose && this.soundSet.choose.play();
}
handleCheckboxSound(data) {
if (data === true) {
this.soundSet.checked && this.soundSet.checked.play();
}
else {
this.soundSet.unchecked && this.soundSet.unchecked.play();
}
}
}