jeopardy/templates/whatsound.lua

70 lines
2.0 KiB
Lua

--[[ Constants
* (all lua builtins that don't allow io/executing code)
color (interface)
gui (interface)
multi (interface bound to a processor) no thread module
callback true/false correct/wrong
]]
local label
local imageHolder
local function index(window, q, callback)
if not q.sound or q.sound == "" then
error("Missing 'sound' field for question!")
callback()
return
end
frame = window:newFrame(0,0,0,-200,0,.2,1,.8)
frame.visibility = 0
label = window:newTextLabel(" " ..q.title.. " ",0,0,0,0,0,0,1,.2)
label.align = ALIGN_CENTER
label.textColor = color.white
label.color = color.new("#060ce9")
imageHolder = frame:newImageButton("assets/images/speaker.png",0,0,0,0,0,0,.3,.4)
imageHolder:setAspectSize(imageHolder.imageWidth,imageHolder.imageHeight)
imageHolder:centerX(true)
imageHolder:centerY(true)
local sound = newSource(q.sound,"stream")
imageHolder:OnReleased(function()
if tonumber(q.start) then
sound:seek(q.start)
end
sound:play()
timer(tonumber(q.playFor) or 10, function()
sound:stop()
sound:seek(0)
end)
end)
local correct = window:newTextButton("Correct",0,-200,0,100,0,1,.5)
correct.color = color.new("#52b11b")
local wrong = window:newTextButton("Wrong",0,-200,0,100,.5,1,.5)
wrong.color = color.new("#bd2626")
local skip = window:newTextButton("Skip",0,-100,0,100,.25,1,.5)
skip.color = color.new("#5d5d5d")
window.apply({
fitFont={},
align=window.ALIGN_CENTER,
OnReleased=function(self)
sound:stop()
if self.text == "Skip" then
callback()
return
end
callback(self.text == "Correct")
end,
},correct,wrong,skip)
end
local function update(dt) -- time in seconds that has passed since
label:fitFont()
label:centerFont()
end
return {
index = index,
update = update
}