aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-03-24 18:16:24 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-03-24 18:16:24 -0700
commitb88b4035ddf5a8aad6391f68fa809a06b510daa3 (patch)
tree6e1e580578caebb5f8d0335c4e064b3a00719c34
parent423516e7170dd26147fe68dea1d1d70bdf6c48bc (diff)
some sdl audio stuff
-rw-r--r--src/library_sdl.js44
1 files changed, 33 insertions, 11 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index d346facd..fcc7e5b9 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -86,7 +86,7 @@ mergeInto(LibraryManager.library, {
surfaces: {},
events: [],
- musics: [null],
+ audios: [null],
fonts: [null],
keyboardState: null,
@@ -723,43 +723,65 @@ mergeInto(LibraryManager.library, {
return 0; // TODO
},
+ Mix_LoadWAV_RW: function(filename, freesrc) {
+ filename = FS.standardizePath(Pointer_stringify(filename));
+ var id = SDL.audios.length;
+ SDL.audios.push({
+ audio: new Audio(filename)
+ });
+ return id;
+ },
+
+ Mix_FreeChunk: function(audio) {
+ SDL.audios[id].audio.pause();
+ SDL.audios[id] = null;
+ return 0;
+ },
+
+ Mix_PlayChannel: function(channel, audio, loops) {
+ var audio = SDL.audios[id].audio;
+ audio.play();
+ return 0; // XXX should return channel
+ },
+ Mix_PlayChannelTimed: 'Mix_PlayChannel', // XXX ignore Timing
+
Mix_LoadMUS: function(filename) {
filename = FS.standardizePath(Pointer_stringify(filename));
- var id = SDL.musics.length;
- SDL.musics.push({
+ var id = SDL.audios.length;
+ SDL.audios.push({
audio: new Audio(filename)
});
return id;
},
Mix_FreeMusic: function(id) {
- SDL.musics[id].audio.pause();
- SDL.musics[id] = null;
+ SDL.audios[id].audio.pause();
+ SDL.audios[id] = null;
return 0;
},
Mix_PlayMusic: function(id, loops) {
if (loops == 0) return;
- var audio = SDL.musics[id].audio;
+ var audio = SDL.audios[id].audio;
audio.loop = loop != 1; // TODO: handle N loops for finite N
audio.play();
return 0;
},
Mix_PauseMusic: function(id) {
- var audio = SDL.musics[id].audio;
+ var audio = SDL.audios[id].audio;
audio.pause();
return 0;
},
Mix_ResumeMusic: function(id) {
- var audio = SDL.musics[id].audio;
+ var audio = SDL.audios[id].audio;
audio.play();
return 0;
},
Mix_HaltMusic: function(id) {
- var audio = SDL.musics[id].audio;
+ var audio = SDL.audios[id].audio;
audio.pause(); // TODO: actually rewind to the beginning
return 0;
},
@@ -801,6 +823,7 @@ mergeInto(LibraryManager.library, {
return surf;
},
TTF_RenderText_Blended: 'TTF_RenderText_Solid', // XXX ignore blending vs. solid
+ TTF_RenderText_Shaded: 'TTF_RenderText_Solid', // XXX ignore blending vs. solid
TTF_SizeText: function(font, text, w, h) {
var fontData = SDL.fonts[font];
@@ -868,9 +891,8 @@ mergeInto(LibraryManager.library, {
SDL_NumJoysticks: function() { return 0 },
- SDL_RWFromFile__deps: ['fopen'],
SDL_RWFromFile: function(filename, mode) {
- return _fopen(filename, mode);
+ return filename; // XXX We just forward the filename
},
SDL_EnableUNICODE: function(on) {