cambridge/load/sounds.lua

98 lines
2.4 KiB
Lua

sound_paths = {
blocks = {
I = "res/se/piece_i.wav",
J = "res/se/piece_j.wav",
L = "res/se/piece_l.wav",
O = "res/se/piece_o.wav",
S = "res/se/piece_s.wav",
T = "res/se/piece_t.wav",
Z = "res/se/piece_z.wav"
},
move = "res/se/move.wav",
rotate = "res/se/rotate.wav",
kick = "res/se/kick.wav",
bottom = "res/se/bottom.wav",
cursor = "res/se/cursor.wav",
cursor_lr = "res/se/cursor_lr.wav",
main_decide = "res/se/main_decide.wav",
mode_decide = "res/se/mode_decide.wav",
lock = "res/se/lock.wav",
hold = "res/se/hold.wav",
erase = {
single = "res/se/single.wav",
double = "res/se/double.wav",
triple = "res/se/triple.wav",
quad = "res/se/quad.wav"
},
fall = "res/se/fall.wav",
ready = "res/se/ready.wav",
go = "res/se/go.wav",
irs = "res/se/irs.wav",
ihs = "res/se/ihs.wav",
-- a secret sound!
welcome = "res/se/welcomeToCambridge.wav",
}
sounds = {}
-- Replace each sound effect string with its love audiosource counterpart, but only if it exists. This lets the game handle missing SFX.
for k,v in pairs(sound_paths) do
if(type(v) == "table") then
-- list of subsounds
for k2,v2 in pairs(v) do
if(love.filesystem.getInfo(sound_paths[k][k2])) then
-- this file exists
sounds[k] = sounds[k] or {}
sounds[k][k2] = love.audio.newSource(sound_paths[k][k2], "static")
end
end
else
if(love.filesystem.getInfo(sound_paths[k])) then
-- this file exists
sounds[k] = love.audio.newSource(sound_paths[k], "static")
end
end
end
function playSE(sound, subsound)
if sound ~= nil then
if sounds[sound] then
if subsound ~= nil then
if sounds[sound][subsound] then
sounds[sound][subsound]:setVolume(config.sfx_volume)
if sounds[sound][subsound]:isPlaying() then
sounds[sound][subsound]:stop()
end
sounds[sound][subsound]:play()
end
else
sounds[sound]:setVolume(config.sfx_volume)
if sounds[sound]:isPlaying() then
sounds[sound]:stop()
end
sounds[sound]:play()
end
end
end
end
function playSEOnce(sound, subsound)
if sound ~= nil then
if sounds[sound] then
if subsound ~= nil then
if sounds[sound][subsound] then
sounds[sound][subsound]:setVolume(config.sfx_volume)
if sounds[sound][subsound]:isPlaying() then
return
end
sounds[sound][subsound]:play()
end
else
sounds[sound]:setVolume(config.sfx_volume)
if sounds[sound]:isPlaying() then
return
end
sounds[sound]:play()
end
end
end
end