garden/obj/door.lua
2025-01-06 20:21:23 +09:00

52 lines
1.2 KiB
Lua

local window = require('window')
local entity = require('entity')
local locked_door = {
{'fill', {0, 0, 0, 120, 60, 120, 60, 0}},
{'fill', {10, 10, 50, 10, 50, 50, 10, 50}},
{'line', {30, 10, 30, 50}},
{'line', {10, 30, 50, 30}},
}
local open_door = {
{'fill', {0, 0, 0, 120, 60, 120, 60, 0}},
}
local m = entity:from{
width = 60,
height = 120,
locked = true,
code = 0,
}
function m:draw()
if self.locked then
self:draw_lines(locked_door)
else
self:draw_lines(open_door)
end
end
m.mousepressed = window.mousepressed(function (self)
if self.locked then
local i = inventory.selected_item
if i and i.code then
if i.code == self.code then
self.locked = false
inventory:use()
log:log("Door opened.")
else
log:log("This seems not a matching key.")
inventory.selected_item = nil
end
else
log:log("It's locked.")
end
else
log:format("You enter %s", self.destination)
set_room(self.destination)
end
end)
return m