/*] Copyright (c) 2009-2011, Charles McGarvey [***************************** **] All rights reserved. * * 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" namespace moof { static int sound_new(script& script) { std::string 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_sample(script& script) { sound* sound; script[1].require_object("sound").get(sound); std::string name; script[2].require_string("sound name").get(name); sound->sample(name); return 0; } static int sound_queue(script& script) { sound* sound; script[1].require_object("sound").get(sound); 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_play(script& script) { sound* sound; script[1].require_object("sound").get(sound); sound->play(); return 0; } static int sound_stop(script& script) { sound* sound; script[1].require_object("sound").get(sound); sound->stop(); return 0; } static int sound_pause(script& script) { sound* sound; script[1].require_object("sound").get(sound); sound->pause(); return 0; } static int sound_toggle(script& script) { sound* sound; script[1].require_object("sound").get(sound); sound->toggle(); return 0; } static int sound_is_playing(script& script) { sound* sound; script[1].require_object("sound").get(sound); script.push(sound->is_playing()); 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_new); 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("toggle", sound_toggle); parent.set_field("sound"); parent.pop(); } } // namespace moof