130 lines
4.9 KiB
Lua
130 lines
4.9 KiB
Lua
local m = gMarioStates[0]
|
|
local np = gNetworkPlayers[0]
|
|
|
|
local pauseMenuShouldShowMusic = true
|
|
local pauseMenuShowLevelID = true
|
|
|
|
local curMap = -1
|
|
local audioMainPaused = false
|
|
local audioMain --Used for the main audio
|
|
local audioSpecial --Used for things like cap music
|
|
local audioCurSeq
|
|
|
|
local bgms = {
|
|
[55] = {audio='snow.ogg', loopEnd = 500, loopStart = 0, volume = 1, name="Frosty Citadel - Sonic Gaiden" },
|
|
[56] = {audio='rainbow.ogg', loopEnd = 148.657, loopStart = 12.406, volume = 1, name="Rainbow Road - Coop Deluxe" },
|
|
[57] = {audio='city.ogg', loopEnd = 500, loopStart = 06.975, volume = 1, name="City Outskirts - Sonic Megamix" }
|
|
}
|
|
|
|
-- disable cap music
|
|
function music()
|
|
if bgms[np.currLevelNum] then
|
|
stop_cap_music()
|
|
end
|
|
end
|
|
hook_event(HOOK_UPDATE, music)
|
|
|
|
function handleMusic()
|
|
------------------------------------------------------
|
|
-- Handle stopping/starting of music --
|
|
------------------------------------------------------
|
|
--Handle main course music
|
|
if curMap ~= np.currLevelNum and m.area.macroObjects then
|
|
curMap = np.currLevelNum
|
|
audioCurSeq = get_current_background_music()
|
|
if audioMain then
|
|
audio_stream_stop(audioMain)
|
|
audio_stream_destroy(audioMain)
|
|
audioMain = nil
|
|
end
|
|
if bgms[curMap] and bgms[curMap].audio then
|
|
set_background_music(0,0,0)
|
|
audioMain = audio_stream_load(bgms[curMap].audio)
|
|
if audioMain then
|
|
audio_stream_set_looping(audioMain, true)
|
|
audio_stream_play(audioMain, true, bgms[curMap].volume)
|
|
print("Playing new audio " .. bgms[curMap].name)
|
|
else
|
|
djui_popup_create('Missing audio!: ' .. bgms[curMap].audio, 10)
|
|
print("Attempted to load filed audio file, but couldn't find it on the system: " .. bgms[curMap].audio)
|
|
end
|
|
else
|
|
print("No audio for this map, so not stopping default: " .. curMap)
|
|
end
|
|
end
|
|
--Handle cap music
|
|
if m.capTimer > 0 and bgms[-2] then
|
|
--Handle pausing main streamed music, if applicable.
|
|
if audioMain and not audioMainPaused then
|
|
audioMainPaused = true
|
|
audio_stream_pause(audioMain)
|
|
end
|
|
--Start up cap music if it's defined.
|
|
if not audioSpecial then
|
|
set_background_music(0,0,0)
|
|
stop_cap_music()
|
|
audioSpecial = audio_stream_load(bgms[-2].audio)
|
|
if audioSpecial then
|
|
audio_stream_set_looping(audioSpecial, true)
|
|
audio_stream_play(audioSpecial, true, bgms[-2].volume)
|
|
print("Playing cap audio " .. bgms[-2].name)
|
|
else
|
|
djui_popup_create('Missing audio!: ' .. bgms[-2].audio, 3)
|
|
print("Attempted to load filed audio file, but couldn't find it on the system: " .. bgms[-2].audio)
|
|
end
|
|
end
|
|
else
|
|
if audioSpecial then
|
|
audio_stream_stop(audioSpecial)
|
|
audio_stream_destroy(audioSpecial)
|
|
audioSpecial = nil
|
|
if audioMain and audioMainPaused then
|
|
audioMainPaused = false
|
|
audio_stream_play(audioMain, false, bgms[curMap].volume)
|
|
else
|
|
set_background_music(0, audioCurSeq, 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
if audioMain then
|
|
audio_stream_set_volume(audioMain, is_game_paused() and bgms[curMap].volume/3.5 or bgms[curMap].volume)
|
|
|
|
local curPosition = audio_stream_get_position(audioMain)
|
|
if curPosition >= bgms[curMap].loopEnd then
|
|
local minus = bgms[curMap].loopStart - bgms[curMap].loopEnd
|
|
audio_stream_set_position(audioMain, curPosition - math.abs(minus))
|
|
end
|
|
end
|
|
if audioSpecial then
|
|
local curPosition = audio_stream_get_position(audioSpecial)
|
|
if curPosition >= bgms[-2].loopEnd then
|
|
local minus = bgms[-2].loopStart - bgms[-2].loopEnd
|
|
audio_stream_set_position(audioSpecial, curPosition - math.abs(minus))
|
|
end
|
|
end
|
|
end
|
|
|
|
function hud_render()
|
|
if pauseMenuShouldShowMusic and is_game_paused() then
|
|
djui_hud_set_resolution(RESOLUTION_DJUI)
|
|
djui_hud_set_font(FONT_NORMAL)
|
|
local screenWidth = djui_hud_get_screen_width()
|
|
local screenHeight = djui_hud_get_screen_height()
|
|
local height = 64
|
|
local y = screenHeight - height
|
|
djui_hud_set_color(200,200,200,255)
|
|
local text
|
|
if pauseMenuShowLevelID then
|
|
text = "Level ID: " .. np.currLevelNum
|
|
elseif audioSpecial then
|
|
text = "Music: " .. bgms[-2].name
|
|
elseif audioMain then
|
|
text = "Music: " .. bgms[curMap].name
|
|
end
|
|
djui_hud_print_text(text, 5, y, 1)
|
|
end
|
|
end
|
|
hook_event(HOOK_ON_HUD_RENDER, hud_render)
|
|
hook_event(HOOK_UPDATE, handleMusic)
|