]> Dogcows Code - chaz/yoink/blobdiff - src/moof/sound_bindings.cc
testing improved runloop scheduling
[chaz/yoink] / src / moof / sound_bindings.cc
index 9e81aa34a4aa1880f932bcbb373f5419493b8d05..6849d91696e66f3fd2a625a968e6f165d43dc481 100644 (file)
@@ -18,16 +18,26 @@ namespace moof {
 
 static int sound_new(script& script)
 {
-       script::slot name = script[2].require_string("sound name");
-
        std::string str;
-       name.get(str);
-
-       script.push(sound(str));
+       if (script[2].get(str))
+       {
+               sound sound(str);
+
+               for (int i = 3; script[i]; ++i)
+               {
+                       if (script[i].get(str)) sound.queue(str);
+                       else break;
+               }
+
+               script.push(sound);
+               return 1;
+       }
+       
+       script.push(sound());
        return 1;
 }
 
-static int sound_enqueue(script& script)
+static int sound_sample(script& script)
 {
        sound* sound;
        script[1].require_object<moof::sound>("sound").get(sound);
@@ -35,39 +45,45 @@ static int sound_enqueue(script& script)
        std::string name;
        script[2].require_string("sound name").get(name);
 
-       sound->enqueue(name);
+       sound->sample(name);
        return 0;
 }
 
-static int sound_play(script& script)
+static int sound_queue(script& script)
 {
        sound* sound;
        script[1].require_object<moof::sound>("sound").get(sound);
-       sound->play();
+
+       std::string name;
+       for (int i = 2; script[i]; ++i)
+       {
+               if (script[i].get(name)) sound->queue(name);
+               else break;
+       }
        return 0;
 }
 
-static int sound_stop(script& script)
+static int sound_play(script& script)
 {
        sound* sound;
        script[1].require_object<moof::sound>("sound").get(sound);
-       sound->stop();
+       sound->play();
        return 0;
 }
 
-static int sound_pause(script& script)
+static int sound_stop(script& script)
 {
        sound* sound;
        script[1].require_object<moof::sound>("sound").get(sound);
-       sound->pause();
+       sound->stop();
        return 0;
 }
 
-static int sound_rewind(script& script)
+static int sound_pause(script& script)
 {
        sound* sound;
        script[1].require_object<moof::sound>("sound").get(sound);
-       sound->rewind();
+       sound->pause();
        return 0;
 }
 
@@ -95,11 +111,11 @@ void sound::import(script& script, const std::string& nspace)
        script::slot parent = script.push_table(nspace);
        script::slot meta = script.push_class<sound>(sound_new);
 
-       meta.set_field("enqueue", sound_enqueue);
+       meta.set_field("sample", sound_sample);
+       meta.set_field("queue", sound_queue);
        meta.set_field("play", sound_play);
        meta.set_field("stop", sound_stop);
        meta.set_field("pause", sound_pause);
-       meta.set_field("rewind", sound_rewind);
        meta.set_field("toggle", sound_toggle);
        meta.set_field("is_playing", sound_is_playing);
 
This page took 0.020287 seconds and 4 git commands to generate.