-/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
+/*] Copyright (c) 2009-2011, Charles McGarvey [*****************************
**] All rights reserved.
*
-* vi:ts=4 sw=4 tw=75
-*
* Distributable under the terms and conditions of the 2-clause BSD license;
* see the file COPYING for a complete text of the license.
*
-**************************************************************************/
+*****************************************************************************/
#include "script.hh"
#include "sound.hh"
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);
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;
}
return 1;
}
-
void sound::import(script& script, const std::string& nspace)
{
script.check_stack(4);
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("is_playing", sound_is_playing);
+ meta.set_field("pause", sound_pause);
meta.set_field("play", sound_play);
+ meta.set_field("queue", sound_queue);
+ meta.set_field("sample", sound_sample);
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);
parent.set_field("sound");
parent.pop();