garden/room/vivarium_lock.lua
2025-01-08 19:59:24 +09:00

87 lines
1.8 KiB
Lua

local window = require("window")
local entity = require("entity")
local room = require("room")
local edge = require("edge")
local button = require("button")
local seed = require("item/seed")
local shelf = entity:from{
width = 60,
height = 60,
item = nil
}
shelf.draw = window.draw(function (self)
love.graphics.setLineWidth(3)
love.graphics.setColor(0, 0, 0)
love.graphics.rectangle('fill', 0, 0, self.width, self.height)
love.graphics.setColor(1, 1, 1)
love.graphics.rectangle('line', 0, 0, self.width, self.height)
if self.item then
self.item:draw()
end
end)
shelf.mousepressed = window.mousepressed(function (self, x, y, button)
if self.item then
inventory:pickup(self.item)
self.item = nil
self.item:setpos(20, 20)
else
local i = inventory.selected_item
if i and i.name == "Seed" then
self.item = i
inventory:use()
end
end
end)
local indicator = entity:from{
width = 100,
height = 20,
text = "",
}
indicator.draw = window.draw(function (self)
love.graphics.rectangle('line', 0, 0, self.width, self.height)
love.graphics.printf(self.text, 5, 5, self.width - 10)
end)
local m = room:from{
state = 'normal',
timer = 0,
lines = {},
}
local btn = button.new("Check", function ()
indicator.text = "Checking..."
m.state = 'checking'
end,
200, 120, 60, 30)
function m:update(dt)
if self.state == 'checking' then
self.timer = self.timer + dt
if self.timer > 5 then
indicator.text = "done"
self.state = 'normal'
self.timer = 0
end
end
end
m:insert(btn)
indicator:install(m, 200, 90)
seed:new():install(m, 150, 120)
shelf:install(m, 60, 90)
edge.set(m, 'down', "Vivarium")
return m