Debounce wield selection sounds.
This commit is contained in:
parent
24bbeb135b
commit
e09ee314fc
@ -15,7 +15,7 @@ minetest.register_item(":", {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
local function wieldsound(player, idx, gain, delay)
|
local function wieldsound(player, idx, gain)
|
||||||
local n = player:get_inventory():get_stack("main", idx):get_name()
|
local n = player:get_inventory():get_stack("main", idx):get_name()
|
||||||
local def = minetest.registered_items[n]
|
local def = minetest.registered_items[n]
|
||||||
if def and def.sounds then
|
if def and def.sounds then
|
||||||
@ -23,27 +23,38 @@ local function wieldsound(player, idx, gain, delay)
|
|||||||
for k, v in pairs(def.sounds.dig) do t[k] = v end
|
for k, v in pairs(def.sounds.dig) do t[k] = v end
|
||||||
t.pos = player:get_pos()
|
t.pos = player:get_pos()
|
||||||
t.gain = gain
|
t.gain = gain
|
||||||
if delay then
|
return function() minetest.sound_play(t.name, t) end
|
||||||
return minetest.after(delay, function()
|
|
||||||
return minetest.sound_play(t.name, t)
|
|
||||||
end)
|
|
||||||
else
|
|
||||||
return minetest.sound_play(t.name, t)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
return function() end
|
||||||
end
|
end
|
||||||
|
|
||||||
local wields = {}
|
local wields = {}
|
||||||
|
local pending = {}
|
||||||
minetest.register_globalstep(function(dtime)
|
minetest.register_globalstep(function(dtime)
|
||||||
for _, player in pairs(minetest.get_connected_players()) do
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
local pname = player:get_player_name()
|
local pname = player:get_player_name()
|
||||||
|
|
||||||
|
local pend = pending[pname]
|
||||||
|
if pend then
|
||||||
|
pend.t = pend.t - dtime
|
||||||
|
if pend.t <= 0 then
|
||||||
|
pend.f()
|
||||||
|
pending[pname] = nil
|
||||||
|
pend = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local idx = player:get_wield_index()
|
local idx = player:get_wield_index()
|
||||||
local old = wields[pname]
|
local old = wields[pname]
|
||||||
if idx ~= old then
|
if idx ~= old then
|
||||||
if old then wieldsound(player, old, 0.07) end
|
|
||||||
wieldsound(player, idx, 0.15, 0.1)
|
|
||||||
wields[pname] = idx
|
wields[pname] = idx
|
||||||
|
if old and not pend then
|
||||||
|
wieldsound(player, old, 0.07)()
|
||||||
|
end
|
||||||
|
pending[pname] = {
|
||||||
|
t = 0.15,
|
||||||
|
f = wieldsound(player, idx, 0.15)
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user