-- 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) self.data = require(filepath) 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