local window = require('window') local entity = require('entity') -- prototype of room -- - background -- - objects -- - edges local room = entity:from{ 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 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 v:draw() end end return room