65 lines
1.2 KiB
Lua
65 lines
1.2 KiB
Lua
local window = require('window')
|
|
|
|
-- prototype of room
|
|
-- - background
|
|
-- - objects
|
|
-- - edges
|
|
local room = {
|
|
x = 0, y = 0,
|
|
background = love.graphics.newImage("res/defaultbg.png"),
|
|
edges = {},
|
|
objects = {},
|
|
}
|
|
|
|
function edge_position(e)
|
|
local wd = screen.width - e.width
|
|
local hd = screen.height - e.height
|
|
|
|
local t = {
|
|
['left'] = { 0, hd/2 },
|
|
['right'] = { wd, hd/2 },
|
|
['up'] = { wd/2, 0 },
|
|
['down'] = { wd/2, hd },
|
|
}
|
|
|
|
local p = t[e.dir]
|
|
return p[1], p[2]
|
|
end
|
|
|
|
local mt = { __index = room }
|
|
|
|
function room:new()
|
|
local m = {}
|
|
setmetatable(m, mt)
|
|
return m
|
|
end
|
|
|
|
function room:insert(obj)
|
|
table.insert(self.objects, obj)
|
|
obj.idx = #self.objects
|
|
end
|
|
|
|
function room:remove(obj)
|
|
table.remove(self.objects, obj.idx)
|
|
|
|
for i, v in ipairs(self.objects) do
|
|
v.idx = i
|
|
end
|
|
end
|
|
|
|
room.mousepressed = window.propagate{'edges', 'objects'}
|
|
|
|
function room:draw()
|
|
love.graphics.draw(self.background, 0, 0)
|
|
|
|
for i, v in ipairs(self.objects) do
|
|
v:draw()
|
|
end
|
|
|
|
for i, v in ipairs(self.edges) do
|
|
local x, y = edge_position(v)
|
|
love.graphics.draw(edge_arrow[v.dir], x, y)
|
|
end
|
|
end
|
|
|
|
return room
|