feature/cast-overlay #33

Merged
PeaAshMeter merged 4 commits from feature/cast-overlay into main 2026-04-13 01:19:52 +03:00
2 changed files with 12 additions and 4 deletions
Showing only changes of commit 5a35d8fe74 - Show all commits

View File

@ -112,6 +112,7 @@ function skillRow.new(characterId)
if not behavior.cast then if not behavior.cast then
behavior.cast = behavior.spellbook[i] behavior.cast = behavior.spellbook[i]
behavior.state = "casting" behavior.state = "casting"
behavior.spellbook[i]:onSelected(char)
else else
behavior.state = "idle" behavior.state = "idle"
behavior.cast = nil behavior.cast = nil

View File

@ -24,9 +24,16 @@ spell.baseCooldown = 1
spell.targetQuery = Query(targetTest.any) spell.targetQuery = Query(targetTest.any)
spell.previewType = "default" 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 if self.previewType == "path" then
local charPos = caster:has(Tree.behaviors.positioned).position:floor() local charPos = caster:has(Tree.behaviors.positioned).position:floor()
--- @type Vec3 --- @type Vec3
@ -46,9 +53,9 @@ function spell:draw()
love.graphics.setCanvas(Tree.level.render.textures.overlayLayer) love.graphics.setCanvas(Tree.level.render.textures.overlayLayer)
love.graphics.setColor(1, 1, 1, 0.5) love.graphics.setColor(1, 1, 1, 0.5)
for _, p in pairs(self.targets) do 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') 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 end
love.graphics.setShader() love.graphics.setShader()