main.lua 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. require 'lib/util'
  2. g = love.graphics
  3. setmetatable(_G, { __index = require('lib/cargo').init('/') })
  4. waveStrength = .002
  5. waveSpeed = 4
  6. firstGame = true
  7. function love.load()
  8. time = 0
  9. drawTarget = g.newCanvas(g.getDimensions())
  10. backTarget = g.newCanvas(g.getDimensions())
  11. soundscape = love.audio.newSource('sound/background.ogg')
  12. soundscape:setVolume(.7)
  13. soundscape:setLooping(true)
  14. soundscape:play()
  15. local joysticks = love.joystick.getJoysticks()
  16. local inputSource = #joysticks > 0 and joysticks[1] or 'mouse'
  17. bubbles = app.bubbles()
  18. jellyfish = app.jellyfish(inputSource)
  19. hud = app.hud()
  20. local ratio = g.getWidth() / g.getHeight()
  21. glsl.wave:send('strength', {waveStrength * ratio, waveStrength})
  22. firstGame = false
  23. end
  24. function love.update(dt)
  25. time = time + dt
  26. if not hud.dead then
  27. jellyfish:update(dt)
  28. end
  29. bubbles:update(dt)
  30. hud:update(dt)
  31. glsl.wave:send('time', time * waveSpeed)
  32. end
  33. function love.draw()
  34. g.setCanvas(drawTarget)
  35. g.setColor(35, 35, 50)
  36. g.rectangle('fill', 0, 0, g.getDimensions())
  37. if not hud.tutorial then
  38. bubbles:draw()
  39. jellyfish:draw()
  40. end
  41. g.setColor(255, 255, 255)
  42. g.setCanvas(backTarget)
  43. g.setShader(glsl.wave)
  44. g.draw(drawTarget)
  45. g.setShader()
  46. g.setCanvas()
  47. g.draw(backTarget)
  48. hud:draw()
  49. end
  50. function love.keypressed(key)
  51. if key == 'escape' then
  52. love.event.quit()
  53. end
  54. jellyfish:keypressed(key)
  55. end
  56. function love.mousepressed(x, y, b)
  57. jellyfish:mousepressed(x, y, b)
  58. end
  59. function love.mousereleased(x, y, b)
  60. hud:mousereleased(x, y, b)
  61. end
  62. function love.gamepadpressed(joystick, button)
  63. jellyfish:gamepadpressed(joystick, button)
  64. end