class = require "libs/middleclass" Timer = require "libs/hump/timer" require "input" require "color" require "room" require "shaders" require "debug_helpers" function love.load() _initDefaults() _initGridVars() loadSprites() gameCanvas = love.graphics.newCanvas() finalCanvas = love.graphics.newCanvas() inputTimer = Timer.new() currentRoom = Room:new{ player = { red = {x = 3, y = 5}, green = {x = 4, y = 3}, blue = {x = 3, y = 10} } } end function love.update(dt) Input:handler() currentRoom:update() end function love.draw() gameCanvas:clear() finalCanvas:clear() love.graphics.setCanvas(gameCanvas) love.graphics.setBlendMode("screen") currentRoom:draw() love.graphics.setCanvas(finalCanvas) local scaleCoefficient = .93 local samples = 7 love.graphics.push() for i = 1, samples do local c = 65 / (i * 1.75) love.graphics.setColor(c, c, c) love.graphics.scale(scaleCoefficient, scaleCoefficient) love.graphics.translate((width / 2 - (width * scaleCoefficient) / 2) + 2, (width / 2 - (height * scaleCoefficient) / 2) + 2) love.graphics.draw(gameCanvas, 0, 0) end love.graphics.pop() love.graphics.setColor(255, 255, 255) love.graphics.draw(gameCanvas, 0, 0) love.graphics.setCanvas() pixelate:send("seed", math.random()) pixelate:send("zoom", .2) love.graphics.setShader(pixelate) love.graphics.draw(finalCanvas, 0, 0) end function love.keypressed(key) if Input.isPlayerMove(key) then currentRoom:movePlayer(key) elseif Input.isPlayerSwitch(key) then local c = Input.playerColor(key) currentRoom:switchPlayer(c) end end function _initDefaults() --set filter love.graphics.setDefaultFilter("linear", "nearest") --set global width / height variables width = love.graphics.getWidth() height = love.graphics.getHeight() if width > height then width = height else height = width end --set randomseed math.randomseed(os.time()) end function _initGridVars() gridWidth, gridHeight = 11, 11 drawScale = width / gridWidth / 16 end function createCanvases() end function loadSprites() playerSprite = love.graphics.newImage("art/player.png") wallSprite = love.graphics.newImage("art/static_wall.png") boxSprite = { red = love.graphics.newImage("art/wall_r.png"), green = love.graphics.newImage("art/wall_g.png"), blue = love.graphics.newImage("art/wall_b.png") } end