LoadedObjects.Spawns = {} function addSpawn(archetype, ...) local o = { archetype = archetype, args = {...} } table.insert(LoadedObjects.Spawns, o) end function activateSpawns() for _, spawn in pairs(LoadedObjects.Spawns) do spawn.archetype:new(unpack(spawn.args)) end end function selectSpawns(x,y) for _, spawn in pairs(LoadedObjects.Spawns) do spawn.selected = nil local offset_x, offset_y = spawn.archetype.display:getCenteredOffset() local left = spawn.args[1] - Camera.pos.x - offset_x local top = spawn.args[2] - Camera.pos.y - offset_y local right = spawn.args[1] - Camera.pos.x + offset_x local bottom = spawn.args[2] - Camera.pos.y + offset_y local x = (x / game.scale) local y = (y / game.scale) if x >= left and y >= top and x <= right and y <= bottom then spawn.selected = true end if spawn.selected then love.graphics.setColor(0,1,1,1) else love.graphics.setColor(0,1,0,1) end love.graphics.rectangle("fill",left-2,top-2,4,4) love.graphics.rectangle("fill",right-2,bottom-2,4,4) love.graphics.setColor(1,1,1,1) end end function drawSpawns() for _, spawn in pairs(LoadedObjects.Spawns) do local offset_x, offset_y = spawn.archetype.display:getCenteredOffset() love.graphics.setColor(1,1,1,1) spawn.archetype.display:draw( spawn.args[1] - Camera.pos.x - offset_x, spawn.args[2] - Camera.pos.y - offset_y ) if spawn.selected then love.graphics.setColor(0,1,1,1) else love.graphics.setColor(0,1,0,1) end love.graphics.rectangle( "line", spawn.args[1] - Camera.pos.x - offset_x, spawn.args[2] - Camera.pos.y - offset_y, spawn.args[1] - Camera.pos.x + offset_x - (spawn.args[1] - Camera.pos.x - offset_x), spawn.args[2] - Camera.pos.y + offset_y - (spawn.args[2] - Camera.pos.y - offset_y) ) if spawn.selected then local text = "" for i=1, #spawn.args do text = text .. tostring(spawn.args[i])..", " end love.graphics.print( spawn.archetype.type, spawn.args[1] - Camera.pos.x + 20, spawn.args[2] - Camera.pos.y ) love.graphics.print( text, spawn.args[1] - Camera.pos.x + 20, spawn.args[2] - Camera.pos.y + 20 ) end end end