1
0
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:
tenplus1
2026-01-10 08:52:35 +00:00
parent 741ad2522e
commit b742b1b3c3
4 changed files with 75 additions and 10 deletions

View File

@@ -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, {