diff --git a/lib/spell/spell.lua b/lib/spell/spell.lua index 577b01b..00159cd 100644 --- a/lib/spell/spell.lua +++ b/lib/spell/spell.lua @@ -24,6 +24,8 @@ spell.targetQuery = Query(targetTest.any) spell.previewType = "default" function spell:update(caster, dt) + self.targets = self.targetQuery:asSet(caster) + if self.previewType == "path" then local charPos = caster:has(Tree.behaviors.positioned).position:floor() --- @type Vec3 @@ -37,6 +39,17 @@ function spell:update(caster, dt) end function spell:draw() + Tree.level.camera:attach() + love.graphics.setCanvas(Tree.level.render.textures.overlayLayer) + love.graphics.setColor(0.3, 1, 0.3, 0.5) + for _, p in pairs(self.targets) do + love.graphics.rectangle("fill", p.x, p.y, 1, 1) + end + + love.graphics.setCanvas() + Tree.level.camera:detach() + love.graphics.setColor(1, 1, 1) + if self.previewType == "path" then local path = self.path --[[@as Deque?]] if not path then return end diff --git a/lib/spell/target_query.lua b/lib/spell/target_query.lua index d84de28..e1dfbb7 100644 --- a/lib/spell/target_query.lua +++ b/lib/spell/target_query.lua @@ -48,7 +48,7 @@ end function query:asSet(caster) --- @TODO: оптимизировать и брать не всю карту для выборки local res = {} - for _, tile in pairs(Tree.level.tileGrid) do + for _, tile in pairs(Tree.level.tileGrid.__grid) do if self.test(caster, tile.position) then table.insert(res, tile.position) end