2019-01-28 09:58:12 +01:00
|
|
|
-- Un sprite est un tileset animé par un animateur. Un animateur est nécessairement
|
|
|
|
-- lié à un sprite, mais on peut en invoqué des différents, suivant les besoins.
|
|
|
|
|
|
|
|
local Sprite = Object:extend()
|
|
|
|
local Animator = require("core.modules.assets.animator")
|
|
|
|
local Tileset = require("core.modules.assets.tileset")
|
|
|
|
|
|
|
|
function Sprite:new(filepath)
|
|
|
|
self.tileset = Tileset(filepath)
|
2019-01-28 10:00:36 +01:00
|
|
|
self.data = require(filepath)
|
2019-01-28 09:58:12 +01:00
|
|
|
|
|
|
|
self.animator = Animator(self)
|
|
|
|
|
|
|
|
self.customSpeed = 0
|
|
|
|
|
|
|
|
self:changeToDefaultAnimation(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:update(dt)
|
|
|
|
self.animator:update(dt)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:setCustomSpeed(customSpeed)
|
|
|
|
self.animator:setCustomSpeed(customSpeed)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:changeToDefaultAnimation(restart)
|
|
|
|
self.animator:changeToDefaultAnimation(restart)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:changeAnimation(name, restart)
|
|
|
|
self.animator:changeAnimation(name, restart)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:drawAnimation(x, y, r, sx, sy, ox, oy, kx, ky)
|
|
|
|
self.animator:draw(x, y, r, sx, sy, ox, oy, kx, ky)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:drawFrame(frame, x, y, r, sx, sy, ox, oy, kx, ky)
|
|
|
|
self.tileset:drawTile(frame, x, y, r, sx, sy, ox, oy, kx, ky)
|
|
|
|
end
|
|
|
|
|
|
|
|
function Sprite:drawPart(x, y, w, h, r, sx, sy, ox, oy, kx, ky)
|
|
|
|
local w = math.floor(w)
|
|
|
|
local h = math.floor(h)
|
|
|
|
|
|
|
|
if w >= 0 and h <= 0 then
|
|
|
|
return 0
|
|
|
|
end
|
|
|
|
|
|
|
|
love.graphics.setScissor(x - ox, y - oy, w, h)
|
|
|
|
self:drawAnimation(x, y, r, sx, sy, ox, oy, kx, ky)
|
|
|
|
love.graphics.setScissor( )
|
|
|
|
end
|
|
|
|
|
|
|
|
return Sprite
|