optimize spell target recount, add subtle animation when targets appear
This commit is contained in:
parent
fbba5cdbf0
commit
5a35d8fe74
@ -112,6 +112,7 @@ function skillRow.new(characterId)
|
||||
if not behavior.cast then
|
||||
behavior.cast = behavior.spellbook[i]
|
||||
behavior.state = "casting"
|
||||
behavior.spellbook[i]:onSelected(char)
|
||||
else
|
||||
behavior.state = "idle"
|
||||
behavior.cast = nil
|
||||
|
||||
@ -24,9 +24,16 @@ spell.baseCooldown = 1
|
||||
spell.targetQuery = Query(targetTest.any)
|
||||
spell.previewType = "default"
|
||||
|
||||
function spell:update(caster, dt)
|
||||
self.targets = self.targetQuery:asSet(caster)
|
||||
|
||||
--- Вызывается, когда игрок выбирает спелл на панели заклинаний
|
||||
--- @param caster Character
|
||||
function spell:onSelected(caster)
|
||||
self.targets = self.targetQuery:asSet(caster)
|
||||
self.tSize = 0.67 -- анимация появления таргетов
|
||||
task.tween(self, { tSize = 1 }, 200, easing.easeOutQuad)
|
||||
end
|
||||
|
||||
function spell:update(caster, dt)
|
||||
if self.previewType == "path" then
|
||||
local charPos = caster:has(Tree.behaviors.positioned).position:floor()
|
||||
--- @type Vec3
|
||||
@ -46,9 +53,9 @@ function spell:draw()
|
||||
love.graphics.setCanvas(Tree.level.render.textures.overlayLayer)
|
||||
love.graphics.setColor(1, 1, 1, 0.5)
|
||||
for _, p in pairs(self.targets) do
|
||||
local s = 1 / Tree.level.camera.pixelsPerMeter
|
||||
local s = self.tSize / Tree.level.camera.pixelsPerMeter
|
||||
local quad = icons:pickQuad('dev_target')
|
||||
love.graphics.draw(icons.atlas, quad, p.x, p.y, 0, s, s)
|
||||
love.graphics.draw(icons.atlas, quad, p.x + 0.5 - self.tSize / 2, p.y + 0.5 - self.tSize / 2, 0, s, s)
|
||||
end
|
||||
love.graphics.setShader()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user