mirror of
https://github.com/doublespeakgames/adarkroom.git
synced 2026-05-28 16:21:53 +08:00
initial start for audio support
This commit is contained in:
Binary file not shown.
@@ -48,6 +48,7 @@
|
||||
</script>
|
||||
|
||||
<script src="script/Button.js"></script>
|
||||
<script src="script/audio.js"></script>
|
||||
<script src="script/engine.js"></script>
|
||||
<script src="script/state_manager.js"></script>
|
||||
<script src="script/header.js"></script>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* Module that takes care of audio playback
|
||||
*/
|
||||
var AudioEngine = {
|
||||
AUDIO_BUFFER_CACHE: {},
|
||||
audioContext: null,
|
||||
output: null,
|
||||
init: function(options) {
|
||||
// for legacy browsers
|
||||
this.audioContext = new (window.AudioContext || window.webkitAudioContext);
|
||||
this.output = this.audioContext.createGain();
|
||||
this.output.connect(this.audioContext.destination);
|
||||
},
|
||||
options: {}, // Nothing for now
|
||||
_playAudioBuffer: function(buffer, loop) {
|
||||
var source = this.audioContext.createBufferSource();
|
||||
source.buffer = buffer;
|
||||
source.connect(this.output);
|
||||
source.loop = loop || false;
|
||||
source.start(0);
|
||||
},
|
||||
playSound: function(src, loop) {
|
||||
var self = this;
|
||||
this.loadAudioFile(src)
|
||||
.then(function (buffer) {
|
||||
self._playAudioBuffer(buffer, loop);
|
||||
});
|
||||
},
|
||||
loadAudioFile(src) {
|
||||
var self = this;
|
||||
if (self.AUDIO_BUFFER_CACHE[src]) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
resolve(self.AUDIO_BUFFER_CACHE[src]);
|
||||
});
|
||||
} else {
|
||||
var request = new Request(src);
|
||||
return fetch(request).then(function(response) {
|
||||
return response.arrayBuffer();
|
||||
}).then(function(buffer) {
|
||||
return self.audioContext.decodeAudioData(buffer, function(decodedData) {
|
||||
self.AUDIO_BUFFER_CACHE[src] = decodedData;
|
||||
return self.AUDIO_BUFFER_CACHE[src];
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -200,6 +200,7 @@
|
||||
$.Dispatch('stateUpdate').subscribe(Engine.handleStateUpdates);
|
||||
|
||||
$SM.init();
|
||||
AudioEngine.init();
|
||||
Notifications.init();
|
||||
Events.init();
|
||||
Room.init();
|
||||
|
||||
Reference in New Issue
Block a user