require 'const' require 'util' constr = require 'constructors' require 'lib.audio' assets = require 'lib.assets' ease = require 'lib.ease' bench = require 'lib.benchmark' tick = require 'lib.tick' scenes = { gameplay = require('scenes/gameplay/main') } local defaultscene = scenes.gameplay scene = defaultscene sprites = {} sound_path = {} music_path = {} fonts = {} cursors = {} debug = false function newAnimation(image, width, height) local animation = {} animation.spriteSheet = image; animation.quads = {}; animation.width = width animation.height = height for y = 0, image:getHeight() - height, height do for x = 0, image:getWidth() - width, width do table.insert(animation.quads, love.graphics.newQuad(x, y, width, height, image:getDimensions())) end end return animation end function love.load() assets.clear() assets.load('assets') fonts.pix = love.graphics.newFont('assets/fonts/pix.ttf', 6) fonts.continuum = love.graphics.newFont('assets/fonts/cont.ttf', 14) fonts.default = love.graphics.newFont(12) if scene.load then scene.load() end cursors.default = love.mouse.newCursor('assets/sprites/cursor/pointer.png', sprites['cursor/pointer']:getWidth()/2, sprites['cursor/pointer']:getHeight()/2) cursors.hover = love.mouse.newCursor('assets/sprites/cursor/hand.png', sprites['cursor/hand']:getWidth()/2, sprites['cursor/hand']:getHeight()/2) cursors.drag = love.mouse.newCursor('assets/sprites/cursor/dragging.png', sprites['cursor/dragging']:getWidth()/2, sprites['cursor/dragging']:getHeight()/2) love.mouse.setCursor(cursors.default) end frame = 0 function love.update(dt) frame = frame + 1 bench.update() tick.update(dt) bench.startBenchmark('update') if scene.update then scene.update(dt) end bench.stopBenchmark('update') end function love.draw() love.graphics.setFont(fonts.default) love.graphics.setColor(1, 1, 1) local sw, sh = love.graphics.getDimensions() bench.startBenchmark('render') if scene.draw then scene.draw() end love.graphics.setColor(1, 1, 1, 1) love.graphics.print('FPS: ' .. 1 / love.timer.getDelta(), 0, sh - 16) if debug then bench.renderBenchmark() end bench.stopBenchmark('render') end function love.mousepressed(x, y, b) if scene.mousepressed then scene.mousepressed(x, y, b) end end function love.mousereleased(x, y, b) if scene.mousereleased then scene.mousereleased(x, y, b) end end function love.keypressed(key) if key == 'f3' then debug = not debug end end