slightly improved sound system

This commit is contained in:
Sumyjkl 2022-08-10 11:50:05 +10:00
parent 3d163aa37b
commit 9adbfaa517

View file

@ -178,6 +178,30 @@ local boat = {
}
}
local sounds = {
engine_idle = {
gain = 0.2,
max_hear_distance = 10,
loop = false,
},
engine_stop = {
gain = 0.8,
max_hear_distance = 10,
loop = false,
},
engine_boost = {
gain = 1,
max_hear_distance = 10,
loop = false,
},
}
function boat.sound_play(self, name, sound_params)
local params = sound_params
params.object = self.object
return minetest.sound_play(name, params)
end
function boat.update_sound(self, dtime)
local fuel = self._fuel
if not fuel or not type(fuel) == "number" then return false end
@ -192,30 +216,21 @@ function boat.update_sound(self, dtime)
if not self._sounds.engine.playing then
self._sounds.engine.playing = true
self._sounds.engine.time_elapsed = 0
self._sounds.engine.handle = minetest.sound_play("sum_airship_lip_trill", {
gain = 1,
object = self.object,
max_hear_distance = 10,
loop = false,
})
self._sounds.engine.handle = boat.sound_play(self, "sum_airship_lip_trill", sounds.engine_boost)
if self._sounds.engine_stop.playing then
minetest.sound_stop(self._sounds.engine_stop.handle)
self._sounds.engine_stop.playing = false
self._sounds.engine_stop.time_elapsed = 0
end
end
elseif self._sounds.engine.playing then
elseif self._sounds.engine.playing
and self._sounds.engine_stop.time_elapsed then
minetest.sound_stop(self._sounds.engine.handle)
self._sounds.engine.playing = false
if not self._sounds.engine_stop.playing then
self._sounds.engine_stop.playing = true
self._sounds.engine_stop.time_elapsed = 0
self._sounds.engine_stop.handle = minetest.sound_play("sum_airship_lip_trill_end", {
gain = 0.8,
object = self.object,
max_hear_distance = 10,
loop = false,
})
self._sounds.engine_stop.handle = boat.sound_play(self, "sum_airship_lip_trill_end", sounds.engine_stop)
end
end
end