69 lines
1.7 KiB
Text
69 lines
1.7 KiB
Text
-- Lesson 14: Playing Video. The finished script, exactly as the lesson ends.
|
|
-- Run it with: Singe -R -v Singe/menuBackground.mkv 14-video.singe
|
|
dofile("Singe/Framework.singe")
|
|
|
|
local stopAt = 400
|
|
local held = false
|
|
|
|
|
|
local function stateName()
|
|
local state = discGetState()
|
|
|
|
if state == DISC_PLAYING then
|
|
return "playing"
|
|
elseif state == DISC_PAUSED then
|
|
return "paused"
|
|
elseif state == DISC_STOPPED then
|
|
return "stopped"
|
|
end
|
|
return "not there"
|
|
end
|
|
|
|
|
|
function onInputPressed(what)
|
|
if what == SWITCH_BUTTON1 then
|
|
if discGetState() == DISC_PLAYING then
|
|
discPause()
|
|
else
|
|
discPlay()
|
|
end
|
|
elseif what == SWITCH_LEFT then
|
|
discSearch(0)
|
|
held = false
|
|
elseif what == SWITCH_RIGHT then
|
|
discSkipForward(30)
|
|
elseif what == SWITCH_START1 then
|
|
discStop()
|
|
held = false
|
|
end
|
|
end
|
|
|
|
|
|
function onOverlayUpdate()
|
|
local frame = discGetFrame()
|
|
|
|
overlayClear()
|
|
if not SINGE_DISC then
|
|
overlayPrint(2, 2, "This game has no video.")
|
|
overlayPrint(2, 4, "Run it again with -v Singe/menuBackground.mkv")
|
|
return OVERLAY_UPDATED
|
|
end
|
|
|
|
if not held and frame >= stopAt then
|
|
discPause()
|
|
held = true
|
|
end
|
|
|
|
overlayPrint(2, 2, "Frame " .. frame .. " of " .. discGetFrameCount())
|
|
overlayPrint(2, 4, "The disc is " .. stateName() .. ".")
|
|
overlayPrint(2, 6, "Space plays and pauses. Left rewinds.")
|
|
overlayPrint(2, 7, "Right jumps on a second. 1 stops the disc.")
|
|
if held then
|
|
overlayPrint(2, 9, "Holding at frame " .. stopAt .. ".")
|
|
end
|
|
|
|
return OVERLAY_UPDATED
|
|
end
|
|
|
|
|
|
discPlay()
|