feature/cast-overlay #33
@ -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
|
||||||
|
|||||||
@ -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()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user