38 lines
1.1 KiB
Lua
38 lines
1.1 KiB
Lua
--- @class DrawBehavior : Behavior
|
|
--- @field animation Animation
|
|
local renderBehavior = {}
|
|
renderBehavior.__index = renderBehavior
|
|
renderBehavior.id = "render"
|
|
renderBehavior.dependencies = { Tree.behaviors.map }
|
|
|
|
|
|
--- @param spriteDir table
|
|
function renderBehavior.new(spriteDir)
|
|
return setmetatable({
|
|
animation = (require 'lib.character.animation').new(spriteDir)
|
|
}, renderBehavior)
|
|
end
|
|
|
|
function renderBehavior:update(dt)
|
|
self.animation.animationTable[self.owner:getState()]:update(dt)
|
|
end
|
|
|
|
function renderBehavior:draw()
|
|
self.owner:try(Tree.behaviors.map,
|
|
function(map)
|
|
local ppm = Tree.level.camera.pixelsPerMeter
|
|
local position = map.displayedPosition
|
|
local state = self.owner:getState()
|
|
|
|
if Tree.level.selector.id == self.owner.id then love.graphics.setColor(0.5, 1, 0.5) end
|
|
|
|
self.animation.animationTable[state]:draw(Tree.assets.files.sprites.character[state],
|
|
position.x + 0.5,
|
|
position.y + 0.5, nil, 1 / ppm * self.animation.side, 1 / ppm, 38, 47)
|
|
love.graphics.setColor(1, 1, 1)
|
|
end
|
|
)
|
|
end
|
|
|
|
return renderBehavior
|