void Lua_V2::PauseChore() { lua_Object choreObj = lua_getparam(1); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R')) return; int chore = lua_getuserdata(choreObj); Chore *c = EMIChore::getPool().getObject(chore); if (c) { c->setPaused(true); } }
void Lua_V2::SetChoreLooping() { lua_Object choreObj = lua_getparam(1); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R')) return; int chore = lua_getuserdata(choreObj); Chore *c = EMIChore::getPool().getObject(chore); if (c) { c->setLooping(false); } lua_pushnil(); }
void Lua_V2::IsChoreLooping() { lua_Object choreObj = lua_getparam(1); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R')) return; int chore = lua_getuserdata(choreObj); Chore *c = EMIChore::getPool().getObject(chore); if (c) { pushbool(c->isLooping()); } else { lua_pushnil(); } }
void Lua_V2::StopChore() { lua_Object choreObj = lua_getparam(1); lua_Object timeObj = lua_getparam(2); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R') || !lua_isnumber(timeObj)) return; int chore = lua_getuserdata(choreObj); float time = lua_getnumber(timeObj); // FIXME: implement missing rest part of code warning("Lua_V2::StopChore: stub, chore: %d time: %f", chore, time); Chore *c = EMIChore::getPool().getObject(chore); if (c) { c->stop(); } }
void Lua_V2::AdvanceChore() { lua_Object choreObj = lua_getparam(1); lua_Object timeObj = lua_getparam(2); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R') || !lua_isnumber(timeObj)) return; int chore = lua_getuserdata(choreObj); float time = lua_getnumber(timeObj); // FIXME: implement missong code warning("Lua_V2::AdvanceChore: stub, chore: %d time: %f", chore, time); Chore *c = PoolChore::getPool().getObject(chore); if (c) { // this is kind of wrong, but it at least gets stuff to draw. c->getOwner()->playChoreLooping(c->getChoreId()); } }
int EMICostume::update(uint time) { for (Common::List<Chore*>::iterator i = _playingChores.begin(); i != _playingChores.end(); ++i) { Chore *c = *i; c->update(time); for (int t = 0; t < c->_numTracks; ++t) { if (c->_tracks[t].component) { c->_tracks[t].component->update(time); } } if (!c->isPlaying()) { i = _playingChores.erase(i); --i; } } return 0; }
void Lua_V2::StopChore() { lua_Object choreObj = lua_getparam(1); lua_Object fadeTimeObj = lua_getparam(2); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R')) return; int chore = lua_getuserdata(choreObj); float fadeTime = 0.0f; if (!lua_isnil(fadeTimeObj)) { if (lua_isnumber(fadeTimeObj)) fadeTime = lua_getnumber(fadeTimeObj); } Chore *c = EMIChore::getPool().getObject(chore); if (c) { c->stop((int)(fadeTime * 1000)); } }
void Lua_V2::AdvanceChore() { lua_Object choreObj = lua_getparam(1); lua_Object timeObj = lua_getparam(2); if (!lua_isuserdata(choreObj) || lua_tag(choreObj) != MKTAG('C','H','O','R') || !lua_isnumber(timeObj)) return; int chore = lua_getuserdata(choreObj); float time = lua_getnumber(timeObj); Chore *c = EMIChore::getPool().getObject(chore); if (c) { if (!c->isPlaying()) { warning("AdvanceChore() called on stopped chore %s (%s)", c->getName(), c->getOwner()->getFilename().c_str()); if (c->isLooping()) { c->getOwner()->playChoreLooping(c->getName()); } else { c->getOwner()->playChore(c->getName()); } } c->setTime(time * 1000); } }