Added Fader class.

This commit is contained in:
2025-09-28 12:54:17 -04:00
parent 56366e4db9
commit 0023c0a0a2
2 changed files with 105 additions and 45 deletions

92
src/fader.lua Normal file
View File

@@ -0,0 +1,92 @@
------------------------------------------------------------------------------
-- Imports
------------------------------------------------------------------------------
local love = require 'love'
local make_class = require 'src.classes'
------------------------------------------------------------------------------
-- Class definitions
------------------------------------------------------------------------------
local Fader = make_class()
------------------------------------------------------------------------------
-- Class methods
------------------------------------------------------------------------------
function Fader:_init()
self.t = 0.0
self.step = 0
self.done = true
self.reverse = false
end
function Fader:_reset()
self.t = 0
self.step = 0
self.done = false
end
function Fader:fade_in()
self:_reset()
self.reverse = true
end
function Fader:fade_out()
self:_reset()
self.reverse = false
end
function Fader:update(dt)
if not self.done then
self.t = self.t + dt
if self.t >= 0.009 then
self.step = self.step + 1
self.t = 0.0
end
if self.step > 175 then self.done = true end
end
end
function Fader:draw()
local c = 0
love.graphics.setColor(0, 0, 0)
for i = 0, 16 do
for j = 0, 10 do
if not self.reverse then
if c <= self.step then
love.graphics.rectangle('fill', 20 * i, 20 * j, 20, 20)
end
else
if c <= self.step then else
love.graphics.rectangle('fill', 20 * i, 20 * j, 20, 20)
end
end
c = c + 1
end
end
love.graphics.setColor()
-- love.graphics.print(string.format('t: %s', self.t), 5, 35)
-- love.graphics.print(string.format('step: %s', self.step), 5, 45)
-- love.graphics.print(string.format('W: %s', love.graphics.getWidth()), 5, 55)
-- love.graphics.print(string.format('H: %s', love.graphics.getHeight()), 5, 65)
end
------------------------------------------------------------------------------
-- Module return
------------------------------------------------------------------------------
return Fader