garden/room/sundial.lua
2025-01-08 12:47:12 +09:00

55 lines
1.2 KiB
Lua

local window = require("window")
local room = require("room")
local edge = require("edge")
local clock_size = 60
local arm_size = 55
local m = room:new()
local from = m.from
function m:from(t)
local sd = from(self, t)
sd.tick = 0
sd.ni = 1
edge.set(sd, 'down', sd.room)
register(sd)
return sd
end
m.draw = window.draw(function (self)
love.graphics.circle('fill', 160, 120, clock_size, 12)
local s = math.pi * self.numbers[self.ni] / 6
local x = 160 + arm_size * math.sin(s)
local y = 120 - arm_size * math.cos(s)
local n = 120 - arm_size
love.graphics.setColor(0, 0, 0)
love.graphics.polygon('fill', 160, n, 160, 120, x, y)
love.graphics.setColor(1, 1, 1)
love.graphics.polygon('fill', 160, n, 160, 120, 140, n)
love.graphics.setColor(0, 0, 0)
love.graphics.polygon('line', 160, n, 160, 120, 140, n)
love.graphics.setColor(1, 1, 1)
self.edges[1]:draw()
end)
function m:update(dt)
self.tick = self.tick + dt
if self.tick > 2 then
self.tick = self.tick - 2
self.ni = self.ni + 1
if self.ni > #self.numbers then
self.ni = 1
end
end
end
return m