/** ** Ask the sound system to play the specified sound. ** ** @param l Lua state. */ static int CclPlaySound(lua_State *l) { CSound *id; LuaCheckArgs(l, 1); id = CclGetSound(l); PlayGameSound(id, MaxSampleVolume); return 0; }
/** ** Glue between c and scheme. Ask to the sound system to remap a sound id ** to a given name. ** ** @param l Lua state. ** ** @return the sound object */ static int CclMapSound(lua_State *l) { const char *sound_name; LuaCheckArgs(l, 2); sound_name = LuaToString(l, 1); MapSound(sound_name, CclGetSound(l)); lua_pushvalue(l, 2); return 1; }
/** ** Set the volume percent of a given sound (useful for easily correcting how loud a sound is). ** ** @param l Lua state. */ static int CclSetSoundVolumePercent(lua_State *l) { LuaCheckArgs(l, 2); lua_pushvalue(l, 1); CSound *id = CclGetSound(l); SetSoundVolumePercent(id, LuaToNumber(l, 2)); return 1; }
/** ** Glue between c and scheme. This function asks the sound system to ** build a special sound group. ** ** @param l Lua state. ** ** @return The sound id of the created sound */ static int CclMakeSoundGroup(lua_State *l) { CSound *id; std::string c_name; CSound *first; CSound *second; LuaUserData *data; LuaCheckArgs(l, 3); c_name = LuaToString(l, 1); lua_pushvalue(l, 2); first = CclGetSound(l); lua_pop(l, 1); second = CclGetSound(l); id = MakeSoundGroup(c_name, first, second); data = (LuaUserData *)lua_newuserdata(l, sizeof(LuaUserData)); data->Type = LuaSoundType; data->Data = id; return 1; }
/** ** Set the range of a given sound. ** ** @param l Lua state. */ static int CclSetSoundRange(lua_State *l) { LuaCheckArgs(l, 2); int tmp = LuaToNumber(l, 2); clamp(&tmp, 0, 255); const unsigned char theRange = static_cast<unsigned char>(tmp); lua_pushvalue(l, 1); CSound *id = CclGetSound(l); SetSoundRange(id, theRange); return 1; }
/** ** Ask the sound system to play the specified sound. ** ** @param l Lua state. */ static int CclPlaySound(lua_State *l) { const int args = lua_gettop(l); if (args < 1 || args > 2) { LuaError(l, "incorrect argument"); } lua_pushvalue(l, 1); CSound *id = CclGetSound(l); lua_pop(l, 1); bool always = false; if (args == 2) { always = LuaToBoolean(l, 2); } PlayGameSound(id, MaxSampleVolume, always); return 0; }