mirror of
https://codeberg.org/tenplus1/ambience.git
synced 2026-01-12 03:35:25 +01:00
Update to ver 2.2, added looped background sounds ability.
This commit is contained in:
43
init.lua
43
init.lua
@@ -27,7 +27,8 @@ function ambience.add_set(set_name, def)
|
||||
|
||||
sound_sets[set_name] = {
|
||||
frequency = def.frequency or 50,
|
||||
sounds = def.sounds,
|
||||
background = def.background or {},
|
||||
sounds = def.sounds or {},
|
||||
sound_check = def.sound_check,
|
||||
nodes = def.nodes
|
||||
}
|
||||
@@ -254,9 +255,42 @@ core.register_globalstep(function(dtime)
|
||||
pname = player:get_player_name()
|
||||
|
||||
local set_name, MORE_GAIN = get_ambience(player, tod, pname)
|
||||
local set_def = sound_sets[set_name]
|
||||
|
||||
ok = playing[pname] -- everything starts off ok if player found
|
||||
|
||||
-- are we playing any available background sounds?
|
||||
if ok and not playing[pname].bg and set_def and #set_def.background > 0 then
|
||||
|
||||
-- choose a random sound from the background set
|
||||
local bg_num = random(#set_def.background)
|
||||
local bg_amb = set_def.background[bg_num]
|
||||
|
||||
-- only play sound if set differs from last one played
|
||||
if set_name ~= playing[pname].bg_set then
|
||||
|
||||
playing[pname].bg = core.sound_play(bg_amb.name, {
|
||||
to_player = pname,
|
||||
gain = (bg_amb.gain or 0.3) * playing[pname].svol,
|
||||
pitch = bg_amb.pitch, fade = bg_amb.fade, loop = true
|
||||
})
|
||||
|
||||
--print("-- bg start", playing[pname].bg)
|
||||
|
||||
playing[pname].bg_set = set_name
|
||||
end
|
||||
|
||||
elseif ok and playing[pname].bg and set_name ~= playing[pname].bg_set then
|
||||
|
||||
--print("-- bg stop", playing[pname].bg, set_name, playing[pname].bg_set)
|
||||
|
||||
core.sound_stop(playing[pname].bg)
|
||||
|
||||
playing[pname].bg = nil
|
||||
playing[pname].bg_set = nil
|
||||
end
|
||||
-------
|
||||
|
||||
-- are we playing something already?
|
||||
if ok and playing[pname].handler then
|
||||
|
||||
@@ -281,10 +315,11 @@ core.register_globalstep(function(dtime)
|
||||
chance = random(1000)
|
||||
|
||||
-- if chance is lower than set frequency then select set
|
||||
if ok and set_name and chance < sound_sets[set_name].frequency then
|
||||
if ok and set_name and chance < set_def.frequency
|
||||
and set_def.sounds and #set_def.sounds > 0 then
|
||||
|
||||
number = random(#sound_sets[set_name].sounds) -- choose random sound from set
|
||||
ambience = sound_sets[set_name].sounds[number] -- grab sound information
|
||||
number = random(#set_def.sounds) -- choose random sound from set
|
||||
ambience = set_def.sounds[number] -- grab sound information
|
||||
|
||||
-- play sound
|
||||
handler = core.sound_play(ambience.name, {
|
||||
|
||||
Reference in New Issue
Block a user