tiny-ecs/main.lua
2015-05-20 10:01:38 +08:00

101 lines
2.4 KiB
Lua

class = require "lib.30log"
tiny = require "lib.tiny"
gamestate = require "lib.gamestate"
local Intro = require "src.states.Intro"
local Level = require "src.states.Level"
local assets = nil
local beholder = require "lib.beholder"
local paused = false
local pauseNextFrame = false
local pauseCanvas = nil
function love.keypressed(k)
beholder.trigger("keypress", k)
end
function love.keyreleased(k)
beholder.trigger("keyrelease", k)
end
function love.load()
love.mouse.setVisible(false)
assets = require "src.assets" -- load assets
gamestate.registerEvents()
gamestate.switch(Intro())
assets.snd_music:play()
assets.snd_music:setLooping(true)
love.resize(love.graphics.getWidth(), love.graphics.getHeight())
end
function love.draw()
if paused then
love.graphics.setColor(90, 90, 90, 255)
love.graphics.draw(pauseCanvas, 0, 0)
love.graphics.setColor(255, 255, 255, 255)
love.graphics.setFont(assets.fnt_hud)
love.graphics.printf("Paused - P to Resume", love.graphics.getWidth() * 0.5 - 125, love.graphics.getHeight() * 0.4, 250, "center")
else
local dt = love.timer.getDelta()
if world then
world:update(dt)
end
end
end
function love.update(dt)
local s = gamestate.current()
if s and s.restartOnSpace and love.keyboard.isDown(" ") then
local TransitionScreen = require "src.entities.TransitionScreen"
world:add(TransitionScreen(true, Intro()))
end
end
function love.resize(w, h)
pauseCanvas = love.graphics.newCanvas(w, h)
if camera then
camera:setWindow(0, 0, w, h)
end
if paused then
love.graphics.setCanvas(pauseCanvas)
world:update(0)
love.graphics.setCanvas()
end
end
-- quitting
beholder.observe("keypress", "escape", love.event.quit)
-- pausing
beholder.observe("keypress", "p", function()
paused = not paused
if paused then
love.graphics.setCanvas(pauseCanvas)
world:update(0)
love.graphics.setCanvas()
end
end)
-- toggle music
beholder.observe("keypress", "m", function()
local vol = assets.snd_music:getVolume()
if vol == 0 then
assets.snd_music:setVolume(1)
else
assets.snd_music:setVolume(0)
end
end)
-- toggle fullscreen
beholder.observe("keypress", "\\", function()
local fs = love.window.getFullscreen()
if fs then
love.window.setMode(900, 600, {resizable = true})
else
local w, h = love.window.getDesktopDimensions()
love.window.setMode(w, h, {fullscreen = true, })
end
love.resize(love.graphics.getWidth(), love.graphics.getHeight())
end)