Fix weather functions being called too often

This commit is contained in:
Wuzzy 2019-09-21 18:03:02 +02:00
parent af2112750a
commit 7a4f5bd388

View File

@ -22,7 +22,7 @@ local sound_min_height = -20 -- Below -20m you can't hear weather
local default_cloud_state = nil local default_cloud_state = nil
local function play_sound() local function update_sounds(do_repeat)
if weather.weather == "storm" then if weather.weather == "storm" then
for _, player in ipairs(minetest.get_connected_players()) do for _, player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name() local name = player:get_player_name()
@ -34,7 +34,7 @@ local function play_sound()
end end
else else
if sound_handles[name] then if sound_handles[name] then
minetest.sound_fade(sound_handles[name], -0.5, 0.0) minetest.sound_fade(sound_handles[name], -0.5, 0)
sound_handles[name] = nil sound_handles[name] = nil
end end
end end
@ -43,16 +43,18 @@ local function play_sound()
for _, player in ipairs(minetest.get_connected_players()) do for _, player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name() local name = player:get_player_name()
if sound_handles[name] then if sound_handles[name] then
minetest.sound_fade(sound_handles[name], -1.0, 0.0) minetest.sound_fade(sound_handles[name], -1.0, 0)
sound_handles[name] = nil sound_handles[name] = nil
end end
end end
end end
minetest.after(3, play_sound) if do_repeat then
minetest.after(3, update_sounds)
end
end end
local function setweather_type(type) local function setweather_type(type, do_repeat)
local valid = false local valid = false
for i = 1, #weather.types do for i = 1, #weather.types do
if weather.types[i] == type then if weather.types[i] == type then
@ -61,7 +63,7 @@ local function setweather_type(type)
end end
if valid then if valid then
weather.weather = type weather.weather = type
play_sound() update_sounds(do_repeat)
return true return true
else else
return false return false
@ -182,6 +184,6 @@ minetest.register_on_leaveplayer(function(player)
sound_handles[player:get_player_name()] = nil sound_handles[player:get_player_name()] = nil
end) end)
setweather_type("clear") setweather_type("clear", true)
default.log("mod:weather", "loaded") default.log("mod:weather", "loaded")