local Time = require"time" local loveframes = require"loveframes" local Clock = require"clock" local clock = Clock:new(nil, love.graphics.getHeight()) local controls = loveframes.Create("panel"):SetPos(10,10) local toggleTime = loveframes.Create("checkbox"):SetParent(controls):SetPos(0,0) toggleTime:SetText("Show time") local hourBox = loveframes.Create("numberbox"):SetMinMax(1, 12):SetValue(12) hourBox:SetParent(controls):SetPos(0,30) local minuteBox = loveframes.Create("numberbox"):SetMinMax(0, 59):SetValue(0) loveframes.Create("text"):SetText(":"):SetParent(controls):SetPos(80,30) minuteBox:SetParent(controls):SetPos(100,30) function setClock() local t = Time:new(hourBox:GetValue(), minuteBox:GetValue()) clock:setTime(t) end hourBox.OnValueChanged = setClock minuteBox.OnValueChanged = setClock function updateInputNoCallback(input, value) callback = input.onValueChanged input.onValueChanged = nil input:SetValue(value) input.onValueChanged = callback end function updateInputs(time) local h, m = time:get() updateInputNoCallback(hourBox, h) updateInputNoCallback(minuteBox, math.floor(m)) end clock.onSetHands = updateInputs function love.mousemoved(x, y, dx, dy, istouch) clock:movemouse(x, y) end -- todo mousepressed & mousereleased function love.mousepressed(x, y, button, istouch, presses) clock:pressmouse(x, y, button) loveframes.mousepressed(x, y, button) end function love.mousereleased(x, y, button, istouch, presses) clock:releasemouse(button) loveframes.mousereleased(x, y, button) end function love.keypressed(key, scancode, isrepeat) loveframes.keypressed(key, isrepeat) end function love.keyreleased(key) loveframes.keyreleased(key) end function love.textinput(text) loveframes.textinput(text) end function love.load() love.graphics.setBackgroundColor(0.02,0.53,0.77) end function love.update(dt) loveframes.update(dt) end function love.draw() loveframes.draw() local shift = (love.graphics.getWidth() - love.graphics.getHeight()) / 2 clock:draw() end