80 lines
1.9 KiB
Text
80 lines
1.9 KiB
Text
-- Lesson 21: Subtitles. The finished script, exactly as the lesson ends.
|
|
dofile("Singe/Framework.singe")
|
|
|
|
overlaySetResolution(discGetWidth(), discGetHeight())
|
|
|
|
local HUD_X = 16
|
|
local STEP = 5
|
|
local TOP_LIMIT = 10
|
|
local LOW_LIMIT = 95
|
|
|
|
local hudFont = fontLoad("Singe/FreeSansBold.ttf", 18)
|
|
local loaded = false
|
|
local showing = false
|
|
local height = 80
|
|
|
|
|
|
if discGetSubtitleTracks() > 0 then
|
|
loaded = srtLoadTrack(0)
|
|
end
|
|
if not loaded then
|
|
loaded = srtLoad(DIR .. "subtitles.srt")
|
|
end
|
|
|
|
if loaded then
|
|
srtPosition(height)
|
|
showing = true
|
|
srtEnable(true)
|
|
end
|
|
|
|
discPlay()
|
|
|
|
|
|
function onInputPressed(what)
|
|
if not loaded then
|
|
return
|
|
end
|
|
if what == SWITCH_BUTTON1 then
|
|
showing = not showing
|
|
srtEnable(showing)
|
|
if showing then
|
|
overlayBanner("Subtitles on", 20)
|
|
else
|
|
overlayBanner("Subtitles off", 20)
|
|
end
|
|
elseif what == SWITCH_UP then
|
|
height = math.max(TOP_LIMIT, height - STEP)
|
|
srtPosition(height)
|
|
elseif what == SWITCH_DOWN then
|
|
height = math.min(LOW_LIMIT, height + STEP)
|
|
srtPosition(height)
|
|
elseif what == SWITCH_LEFT then
|
|
srtClear()
|
|
discSearch(0)
|
|
discPlay()
|
|
end
|
|
end
|
|
|
|
|
|
function onOverlayUpdate()
|
|
overlayClear()
|
|
fontSelect(hudFont)
|
|
colorForeground(255, 255, 255)
|
|
if loaded then
|
|
if showing then
|
|
fontPrint(HUD_X, 16, "Frame " .. discGetFrame() .. " subtitles ON at " .. height .. "%")
|
|
else
|
|
fontPrint(HUD_X, 16, "Frame " .. discGetFrame() .. " subtitles OFF")
|
|
end
|
|
fontPrint(HUD_X, 40, "Fire toggles them, up and down move them, left rewinds")
|
|
else
|
|
fontPrint(HUD_X, 16, "No subtitles loaded.")
|
|
fontPrint(HUD_X, 40, "Run with --framefile and check subtitles.srt is beside the script.")
|
|
end
|
|
return OVERLAY_UPDATED
|
|
end
|
|
|
|
|
|
function onShutdown()
|
|
fontUnload(hudFont)
|
|
end
|