class = require "libs/middleclass" Timer = require "libs/hump/timer" sfxr = require "libs/sfxrlua/sfxr" require "input" require "color" require "room" require "shaders" require "debug_helpers" function love.load() _initDefaults() _initGridVars() _initSounds() 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() love.graphics.setBlendMode("alpha") love.graphics.setColor(255, 255, 255, 255) love.graphics.draw(finalCanvas, 0, 0) love.graphics.print("Current FPS: "..tostring(love.timer.getFPS( )), 10, 10) 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 _initSounds() staticWave = sfxr.newSound() staticWave.wavetype = 3 staticWave.frequency.start = .1 staticWave.envelope.release = 0 staticWave.envelope.sustain = 1 staticWave.envelope.decay = 0 static = love.audio.newSource(staticWave:generateSoundData()) static:setLooping(true) static:setVolume(.15) static:play() 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") } artifactSprite = love.graphics.newImage("art/process/cone.png") end