diff --git a/sonic-radiance.love/birb/modules/assets/types/animator.lua b/sonic-radiance.love/birb/modules/assets/types/animator.lua index 9d830a1..9d92b25 100644 --- a/sonic-radiance.love/birb/modules/assets/types/animator.lua +++ b/sonic-radiance.love/birb/modules/assets/types/animator.lua @@ -124,10 +124,15 @@ end -- CALLBACK FUNCTIONS -- Handle getting a calback from the animation system -function Animator:setCallback(actor) +function Animator:setCallbackTarget(actor) self.actor = actor end +function Animator:setCallback(actor) + core.debug:warning("Animator", "Animator:setCallback is deprecated, prefer Animator:setCallbackTarget instead") + self:setCallbackTarget(actor) +end + function Animator:sendCallback() if (self.actor ~= nil) then self.actor:animationEnded(self.currentAnimation) diff --git a/sonic-radiance.love/birb/modules/world/actors/actor2D.lua b/sonic-radiance.love/birb/modules/world/actors/actor2D.lua index 1b8c794..93f106d 100644 --- a/sonic-radiance.love/birb/modules/world/actors/actor2D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/actor2D.lua @@ -22,18 +22,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ]] -local cwd = (...):gsub('%.actor2D$', '') .. "." -local BaseActor = require(cwd .. "baseactor") -local Actor2D = BaseActor:extend() +local BaseActor = require "birb.modules.world.actors.mixins.base" +local SpritedActor = require("birb.modules.world.actors.mixins.sprites") +local TimedActor = require("birb.modules.world.actors.mixins.timers") +local InputActor = require("birb.modules.world.actors.mixins.inputs") -local Hitbox = require(cwd .. "utils.hitbox2D") +local Actor2D = Object:extend() +Actor2D:implement(BaseActor) +Actor2D:implement(SpritedActor) +Actor2D:implement(TimedActor) +Actor2D:implement(InputActor) + +local Hitbox = require "birb.modules.world.actors.utils.hitbox2D" -- INIT FUNCTIONS -- Initialise the actor and its base functions function Actor2D:new(world, type, x, y, w, h, isSolid) - Actor2D.super.new(self, world, type, x, y, 0, w, h, 0, isSolid) + self:init(world, type, x, y, 0, w, h, 0, isSolid) self:initHitboxes() + self:initTimers() + self:initSprite() + self:initKeys() end function Actor2D:destroy() diff --git a/sonic-radiance.love/birb/modules/world/actors/actor3D.lua b/sonic-radiance.love/birb/modules/world/actors/actor3D.lua index c5f4208..3ee9b0f 100644 --- a/sonic-radiance.love/birb/modules/world/actors/actor3D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/actor3D.lua @@ -22,19 +22,30 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ]] -local cwd = (...):gsub('%.actor3D$', '') .. "." -local BaseActor = require(cwd .. "baseactor") -local Actor3D = BaseActor:extend() +local Hitbox = require("birb.modules.world.actors.utils.hitbox3D") +local Boxes = require("birb.modules.world.actors.utils.boxes") -local Hitbox = require(cwd .. "utils.hitbox3D") -local Boxes = require(cwd .. "utils.boxes") +local BaseActor = require("birb.modules.world.actors.mixins.base") +local SpritedActor = require("birb.modules.world.actors.mixins.sprites") +local TimedActor = require("birb.modules.world.actors.mixins.timers") +local InputActor = require("birb.modules.world.actors.mixins.inputs") + +local Actor3D = Object:extend() +Actor3D:implement(BaseActor) +Actor3D:implement(SpritedActor) +Actor3D:implement(TimedActor) +Actor3D:implement(InputActor) -- INIT FUNCTIONS -- Initialise the actor and its base functions function Actor3D:new(world, type, x, y, z, w, h, d, isSolid) - Actor3D.super.new(self, world, type, x, y, z, w, h, d, isSolid) + self:init(world, type, x, y, z, w, h, d, isSolid) self:initHitboxes() + self:initTimers() + self:initSprite() + self:initKeys() + self.world:registerShape(self) self.boxes = Boxes self.doCastShadows = true diff --git a/sonic-radiance.love/birb/modules/world/actors/gfx2D.lua b/sonic-radiance.love/birb/modules/world/actors/gfx2D.lua index 900654c..955170a 100644 --- a/sonic-radiance.love/birb/modules/world/actors/gfx2D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/gfx2D.lua @@ -29,8 +29,7 @@ function GFX:new(world, x, y, spritename) local width, height = world.scene.assets.sprites[spritename]:getDimensions() GFX.super.new(self, world, "gfx", x - (width/2), y - (height/2), width, height) - self:setSprite(spritename) - self:cloneSprite() + self:setSprite(spritename, true) end function GFX:animationEnded(animation) diff --git a/sonic-radiance.love/birb/modules/world/actors/gfx3D.lua b/sonic-radiance.love/birb/modules/world/actors/gfx3D.lua index bf26f56..c7e0325 100644 --- a/sonic-radiance.love/birb/modules/world/actors/gfx3D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/gfx3D.lua @@ -29,8 +29,7 @@ function GFX:new(world, x, y, z, spritename) local width, height = world.scene.assets.sprites[spritename]:getDimensions() GFX.super.new(self, world, "gfx", x - (width/2), y - (width/2), z - (height/2), width, width, height) - self:setSprite(spritename) - self:cloneSprite() + self:setSprite(spritename, true) end function GFX:animationEnded(animation) diff --git a/sonic-radiance.love/birb/modules/world/actors/baseactor.lua b/sonic-radiance.love/birb/modules/world/actors/mixins/base.lua similarity index 66% rename from sonic-radiance.love/birb/modules/world/actors/baseactor.lua rename to sonic-radiance.love/birb/modules/world/actors/mixins/base.lua index c38d29a..3262408 100644 --- a/sonic-radiance.love/birb/modules/world/actors/baseactor.lua +++ b/sonic-radiance.love/birb/modules/world/actors/mixins/base.lua @@ -24,20 +24,18 @@ local BaseActor = Object:extend() -local Timer = require("birb.classes.time.timer") - -- INIT FUNCTIONS -- Initialise the actor and its base functions -function BaseActor:new(world, type, x, y, z, w, h, d, isSolid) +function BaseActor:init(world, type, x, y, z, w, h, d, isSolid) self.type = type or "" self.isSolid = isSolid or false self.depth = 0 + self.updateFunctions = {} + self:setManagers(world) self:initKeys() - self:initTimers() - self:setSprite() self:initPhysics(x, y, z, w, h, d) self:setDebugColor(1, 1, 1) @@ -49,6 +47,16 @@ function BaseActor:setProperties(properties) -- Do something here end +function BaseActor:addUpdateFunction(func) + table.insert(self.updateFunctions, func) +end + +function BaseActor:applyUpdateFunctions(dt) + for key, func in ipairs(self.updateFunctions) do + func(self, dt) + end +end + function BaseActor:setManagers(world) self.world = world self.scene = world.scene @@ -202,9 +210,8 @@ end function BaseActor:update(dt) self:updateStart(dt) - self:updateTimers(dt) self:autoMove(dt) - self:updateSprite(dt) + self:applyUpdateFunctions(dt) self:updateEnd(dt) end @@ -218,38 +225,6 @@ function BaseActor:autoMove(dt) -- 2D and 3D childrens end --- INPUT FUNCTIONS --- get input from the world object - -function BaseActor:initKeys() - self.keys = core.input.fakekeys -end - -function BaseActor:getInput(keys) - self.keys = keys or core.input.fakekeys -end - --- TIMER FUNCTIONS --- Control the integrated timers of the actor - -function BaseActor:initTimers() - self.timers = {} -end - -function BaseActor:addTimer(name, t) - self.timers[name] = Timer(self, name, t) -end - -function BaseActor:updateTimers(dt) - for k,v in pairs(self.timers) do - v:update(dt) - end -end - -function BaseActor:timerResponse(name) - -- here come the timer responses -end - -- HITBOX FUNCTIONS -- All functions to handle hitboxes @@ -365,120 +340,4 @@ function BaseActor:drawHUD(id, height, width) end --- SPRITES FUNCTIONS --- Handle the sprite of the actor - -function BaseActor:setSprite(spritename, ox, oy) - self.sprite = {} - self.sprite.name = spritename or nil - self.sprite.ox = ox or 0 - self.sprite.oy = oy or 0 - self.sprite.sx = 1 - self.sprite.sy = 1 - self.sprite.exist = (spritename ~= nil) - self.sprite.clone = nil -end - -function BaseActor:cloneSprite() - if self.sprite.name ~= nil then - self.sprite.clone = self.assets.sprites[self.sprite.name]:clone() - self.sprite.clone:setCallback(self) - end -end - -function BaseActor:changeAnimation(animation, restart) - if (self.sprite.clone == nil) then - self.assets.sprites[self.sprite.name]:changeAnimation(animation, restart) - else - self.sprite.clone:changeAnimation(animation, restart) - end -end - -function BaseActor:animationEnded(animation) - -- Empty placeholder function -end - -function BaseActor:setCustomSpeed(customSpeed) - if (self.sprite.clone == nil) then - self.assets.sprites[self.sprite.name]:setCustomSpeed(customSpeed) - else - self.sprite.clone:setCustomSpeed(customSpeed) - end -end - -function BaseActor:updateSprite(dt) - if (self.sprite.clone ~= nil) then - self.sprite.clone:update(dt) - end -end - -function BaseActor:setSpriteScallingX(sx) - local sx = sx or 1 - - self.sprite.sx = sx -end - -function BaseActor:setSpriteScallingY(sy) - local sy = sy or 1 - - self.sprite.sy = sy -end - -function BaseActor:getCurrentAnimation() - if (self.sprite.clone == nil) then - return self.assets.sprites[self.sprite.name]:getCurrentAnimation() - else - return self.sprite.clone:getCurrentAnimation() - end -end - - -function BaseActor:getSpriteScalling() - return self.sprite.sx, self.sprite.sy -end - -function BaseActor:getFrame() - if (self.sprite.name ~= nil) then - if (self.sprite.clone ~= nil) then - return self.sprite.clone:getFrame() - else - return self.assets.sprites[self.sprite.name]:getFrame() - end - end -end - -function BaseActor:getRelativeFrame() - if (self.sprite.name ~= nil) then - if (self.sprite.clone ~= nil) then - return self.sprite.clone:getRelativeFrame() - else - return self.assets.sprites[self.sprite.name]:getRelativeFrame() - end - end -end - -function BaseActor:getAnimationDuration() - if (self.sprite.name ~= nil) then - if (self.sprite.clone ~= nil) then - return self.sprite.clone:getAnimationDuration() - else - return self.assets.sprites[self.sprite.name]:getAnimationDuration() - end - end -end - -function BaseActor:drawSprite(x, y, r, sx, sy, ox, oy, kx, ky) - if (self.sprite.name ~= nil) then - local x = x + self.sprite.ox - local y = y + self.sprite.oy - local sx = sx or self.sprite.sx - local sy = sy or self.sprite.sy - if (self.sprite.clone ~= nil) then - self.sprite.clone:draw(x, y, r, sx, sy, ox, oy, kx, ky) - else - self.assets.sprites[self.sprite.name]:drawAnimation(x, y, r, sx, sy, ox, oy, kx, ky) - end - end -end - return BaseActor diff --git a/sonic-radiance.love/birb/modules/world/actors/mixins/inputs.lua b/sonic-radiance.love/birb/modules/world/actors/mixins/inputs.lua new file mode 100644 index 0000000..ae9b41e --- /dev/null +++ b/sonic-radiance.love/birb/modules/world/actors/mixins/inputs.lua @@ -0,0 +1,34 @@ +-- InputActor.lua :: Get input from the world object. + +--[[ + Copyright © 2019 Kazhnuz + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +]] + +local InputActor = Object:extend() + +function InputActor:initKeys() + self.keys = core.input.fakekeys +end + +function InputActor:getInput(keys) + self.keys = keys or core.input.fakekeys +end + +return InputActor \ No newline at end of file diff --git a/sonic-radiance.love/birb/modules/world/actors/mixins/sprites.lua b/sonic-radiance.love/birb/modules/world/actors/mixins/sprites.lua new file mode 100644 index 0000000..4641190 --- /dev/null +++ b/sonic-radiance.love/birb/modules/world/actors/mixins/sprites.lua @@ -0,0 +1,101 @@ +-- SpritedActor.lua :: Handle the sprite of the actor. + +--[[ + Copyright © 2019 Kazhnuz + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +]] + +local SpritedActor = Object:extend() +local Sprite = require("birb.modules.world.actors.utils.sprites") + +function SpritedActor:initSprite() + self:addUpdateFunction(self.updateSprite) +end + +function SpritedActor:setSprite(spritename, isClone, ox, oy) + self.sprite = Sprite(self, spritename, ox, oy) + if (isClone) then + self.sprite:clone() + end +end + +function SpritedActor:changeAnimation(animation, restart) + if (self.sprite ~= nil) then + core.debug:warning("actor", "the function SpritedActor:changeAnimation is deprecated, prefer SpritedActor.sprite:changeAnimation()") + self.sprite:changeAnimation(animation, restart) + end +end + +function SpritedActor:animationEnded(animation) + -- Empty placeholder function +end + +function SpritedActor:setCustomSpeed(customSpeed) + if (self.sprite ~= nil) then + core.debug:warning("actor", "the function SpritedActor:setCustomSpeed is deprecated, prefer SpritedActor.sprite:setCustomSpeed()") + self.sprite:setCustomSpeed(customSpeed) + end +end + +function SpritedActor:updateSprite(dt) + if (self.sprite ~= nil) then + self.sprite:update(dt) + end +end + +function SpritedActor:getCurrentAnimation() + if (self.sprite ~= nil) then + core.debug:warning("actor", "the function SpritedActor:getCurrentAnimation is deprecated, prefer SpritedActor.sprite:getCurrentAnimation()") + return self.sprite:getCurrentAnimation() + end +end + +function SpritedActor:getSpriteScalling() + core.debug:warning("actor", "the function SpritedActor:getSpriteScalling is deprecated, prefer SpritedActor.sprite:getScalling()") + return self.sprite:getScalling() +end + +function SpritedActor:getFrame() + if (self.sprite ~= nil) then + core.debug:warning("actor", "the function SpritedActor:getFrame is deprecated, prefer SpritedActor.sprite:getFrame()") + return self.sprite:getFrame() + end +end + +function SpritedActor:getRelativeFrame() + if (self.sprite ~= nil) then + core.debug:warning("actor", "the function SpritedActor:getRelativeFrame is deprecated, prefer SpritedActor.sprite:getRelativeFrame()") + return self.sprite:getRelativeFrame() + end +end + +function SpritedActor:getAnimationDuration() + if (self.sprite ~= nil) then + core.debug:warning("actor", "the function SpritedActor:getAnimationDuration is deprecated, prefer SpritedActor.sprite:getAnimationDuration()") + return self.sprite:getAnimationDuration() + end +end + +function SpritedActor:drawSprite(x, y, r, sx, sy, ox, oy, kx, ky) + if (self.sprite ~= nil) then + self.sprite:draw(x, y, r, sx, sy, ox, oy, kx, ky) + end +end + +return SpritedActor \ No newline at end of file diff --git a/sonic-radiance.love/birb/modules/world/actors/mixins/timers.lua b/sonic-radiance.love/birb/modules/world/actors/mixins/timers.lua new file mode 100644 index 0000000..4dacbfb --- /dev/null +++ b/sonic-radiance.love/birb/modules/world/actors/mixins/timers.lua @@ -0,0 +1,49 @@ +-- TimedActor.lua :: Handle the sprite of the actor. + +--[[ + Copyright © 2019 Kazhnuz + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +]] + +local TimedActor = Object:extend() + +local TweenManager = require "birb.classes.time" + +-- TIMER FUNCTIONS +-- Control the integrated timers of the actor + +function TimedActor:initTimers() + self.timers = TweenManager(self) + self:addUpdateFunction(self.updateTimers) +end + +function TimedActor:addTimer(name, t) + core.debug:warning("actor", "function actor:addTimer is deprecated, prefer actor.timers:newTimer") + self.timers:newTimer(t, name) +end + +function TimedActor:updateTimers(dt) + self.timers:update(dt) +end + +function TimedActor:timerResponse(name) + -- here come the timer responses +end + +return TimedActor \ No newline at end of file diff --git a/sonic-radiance.love/birb/modules/world/actors/utils/sprites.lua b/sonic-radiance.love/birb/modules/world/actors/utils/sprites.lua new file mode 100644 index 0000000..293f378 --- /dev/null +++ b/sonic-radiance.love/birb/modules/world/actors/utils/sprites.lua @@ -0,0 +1,120 @@ +local Sprite = Object:extend() + +-- SPRITES FUNCTIONS +-- Handle the sprite of the actor + +function Sprite:new(owner, spritename, ox, oy) + self.owner = owner + self.assets = self.owner.assets + self.name = spritename or nil + self.ox = ox or 0 + self.oy = oy or 0 + self.sx = 1 + self.sy = 1 + self.exist = (spritename ~= nil) + self.spriteClone = nil +end + +function Sprite:clone() + if self.name ~= nil then + self.spriteClone = self.assets.sprites[self.name]:clone() + self.spriteClone:setCallbackTarget(self.owner) + end +end + +function Sprite:isCloned() + return (self.spriteClone == nil) +end + +function Sprite:changeAnimation(animation, restart) + if (self:isCloned()) then + self.assets.sprites[self.name]:changeAnimation(animation, restart) + else + self.spriteClone:changeAnimation(animation, restart) + end +end + +function Sprite:setCustomSpeed(customSpeed) + if (self:isCloned()) then + self.assets.sprites[self.name]:setCustomSpeed(customSpeed) + else + self.spriteClone:setCustomSpeed(customSpeed) + end +end + +function Sprite:update(dt) + if (self.spriteClone ~= nil) then + self.spriteClone:update(dt) + end +end + +function Sprite:setScallingX(sx) + local sx = sx or 1 + + self.sx = sx +end + +function Sprite:setScallingY(sy) + local sy = sy or 1 + + self.sy = sy +end + +function Sprite:getCurrentAnimation() + if (self:isCloned()) then + return self.assets.sprites[self.name]:getCurrentAnimation() + else + return self.spriteClone:getCurrentAnimation() + end +end + + +function Sprite:getScalling() + return self.sx, self.sy +end + +function Sprite:getFrame() + if (self.name ~= nil) then + if (self.spriteClone ~= nil) then + return self.spriteClone:getFrame() + else + return self.assets.sprites[self.name]:getFrame() + end + end +end + +function Sprite:getRelativeFrame() + if (self.name ~= nil) then + if (self.spriteClone ~= nil) then + return self.spriteClone:getRelativeFrame() + else + return self.assets.sprites[self.name]:getRelativeFrame() + end + end +end + +function Sprite:getAnimationDuration() + if (self.name ~= nil) then + if (self.spriteClone ~= nil) then + return self.spriteClone:getAnimationDuration() + else + return self.assets.sprites[self.name]:getAnimationDuration() + end + end +end + +function Sprite:draw(x, y, r, sx, sy, ox, oy, kx, ky) + if (self.name ~= nil) then + local x = x + self.ox + local y = y + self.oy + local sx = sx or self.sx + local sy = sy or self.sy + if (self.spriteClone ~= nil) then + self.spriteClone:draw(x, y, r, sx, sy, ox, oy, kx, ky) + else + self.assets.sprites[self.name]:drawAnimation(x, y, r, sx, sy, ox, oy, kx, ky) + end + end +end + +return Sprite \ No newline at end of file diff --git a/sonic-radiance.love/game/modules/world/actors/player/init.lua b/sonic-radiance.love/game/modules/world/actors/player/init.lua index 11beea2..285ac48 100644 --- a/sonic-radiance.love/game/modules/world/actors/player/init.lua +++ b/sonic-radiance.love/game/modules/world/actors/player/init.lua @@ -8,7 +8,7 @@ function Player:new(world, x, y, z, id) Player.super.new(self, world, "player", x, y, 0, 16, 12, 24, true) self:setGravity(480*2) - self:init() + self:initPlayer() self.action = "normal" @@ -16,11 +16,10 @@ function Player:new(world, x, y, z, id) self.score = 0 end -function Player:init() +function Player:initPlayer() self.charName = game.characters:getActiveCharacter() self.assets:addSprite(self.charName, "datas/gamedata/characters/" .. self.charName .. "/sprites") - self:setSprite(self.charName, 8, 10) - self:cloneSprite() + self:setSprite(self.charName, true, 8, 10) self.emblem = Emblem(game.characters:getActiveCharacterData(), self.scene) self.guiborder = game.gui.newBorder(424, 20, 6) @@ -103,7 +102,7 @@ function Player:setDirection(direction) if direction ~= 0 then direction = utils.math.sign(direction) self.direction = direction - self:setSpriteScallingX(direction) + self.sprite:setScallingX(direction) end end diff --git a/sonic-radiance.love/scenes/overworld/actors/gfx.lua b/sonic-radiance.love/scenes/overworld/actors/gfx.lua index c33e853..f2f611e 100644 --- a/sonic-radiance.love/scenes/overworld/actors/gfx.lua +++ b/sonic-radiance.love/scenes/overworld/actors/gfx.lua @@ -6,8 +6,7 @@ function GFX:new(world, x, y, spritename) local width, height = world.scene.assets.sprites[spritename]:getDimensions() GFX.super.new(self, world, "gfx", x - (width/2), y - (height/2), width, height) - self:setSprite(spritename) - self:cloneSprite() + self:setSprite(spritename, true) end function GFX:animationEnded(animation)