feat: add a way to override GFX by character
This commit is contained in:
parent
603d61a1fc
commit
39507951b8
1 changed files with 26 additions and 3 deletions
|
@ -4,7 +4,9 @@ local GFX_DIRECTORY = "assets/sprites/gfx/"
|
|||
|
||||
function GFX:new(world, x, y, z, spritename, creator, blockProcess, tag)
|
||||
GFX.super.new(self, world, x, y, z)
|
||||
self:loadAnimation(spritename)
|
||||
|
||||
self.char = self:getCharacter(creator.choregraphy.fighter)
|
||||
self:setAnimation(spritename)
|
||||
|
||||
self.creator = creator
|
||||
self.blockProcess = blockProcess or false
|
||||
|
@ -17,9 +19,30 @@ function GFX:new(world, x, y, z, spritename, creator, blockProcess, tag)
|
|||
self.direction = 1
|
||||
end
|
||||
|
||||
function GFX:loadAnimation(spritename)
|
||||
function GFX:getCharacter(fighter)
|
||||
if (fighter.isHero) then
|
||||
return fighter.abstract.simplename
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function GFX:setAnimation(spritename)
|
||||
local defaultPath = GFX_DIRECTORY .. spritename
|
||||
if (utils.string.isEmpty(self.char)) then
|
||||
self:loadAnimation(spritename, defaultPath)
|
||||
else
|
||||
local charGFXPath = "datas/gamedata/characters/" .. self.char .. "/gfx/" .. spritename
|
||||
if (utils.filesystem.exists(charGFXPath .. ".lua")) then
|
||||
self:loadAnimation(self.char .. spritename, charGFXPath)
|
||||
else
|
||||
self:loadAnimation(spritename, defaultPath)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GFX:loadAnimation(spritename, path)
|
||||
if self.world.assets.sprites[spritename] == nil then
|
||||
self.world.assets:addSprite(spritename, GFX_DIRECTORY .. spritename)
|
||||
self.world.assets:addSprite(spritename, path)
|
||||
end
|
||||
local width, height = self.world.assets.sprites[spritename]:getDimensions()
|
||||
self:setSprite(spritename, width/2, height, true)
|
||||
|
|
Loading…
Reference in a new issue