effects.lua 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. local Effects = class()
  2. function Effects:init()
  3. self.active = love.graphics.isSupported('shader')
  4. self.effects = {}
  5. self:add('bloom')
  6. self:add('darkenBehind')
  7. self:add('motionBlur')
  8. self:add('deathDesaturate')
  9. self:add('vignette')
  10. self:add('antialias')
  11. end
  12. function Effects:update()
  13. if not self.active then return end
  14. for i = 1, #self.effects do f.exe(self.effects[i].update, self.effects[i]) end
  15. end
  16. function Effects:resize()
  17. if not self.active then return end
  18. for i = 1, #self.effects do f.exe(self.effects[i].resize, self.effects[i]) end
  19. end
  20. function Effects:add(code)
  21. if not self.active then return end
  22. local effect = new(data.effect[code])
  23. f.exe(effect.activate, effect)
  24. table.insert(self.effects, effect)
  25. self.effects[code] = effect
  26. ctx.view:register(effect, 'effect')
  27. end
  28. function Effects:remove(code)
  29. self.effects[code] = nil
  30. for i = #self.effects, 1, -1 do
  31. if self.effects[i].code == code then
  32. ctx.view:unregister(self.effects[i])
  33. table.remove(self.effects, i)
  34. end
  35. end
  36. end
  37. function Effects:get(code)
  38. return self.effects[code]
  39. end
  40. return Effects