87 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			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
 |