heroes-of-nerevelon/lib/selector.lua
Neckrat 7753413385 пупупу... ой, то есть pupupu...
try to fix side draw (after initial side draw)
2025-08-15 19:34:56 +03:00

47 lines
1.4 KiB
Lua

--- @class Selector
--- @field id Id | nil
local selector = {}
selector.__index = selector
local function new()
return setmetatable({}, selector)
end
--- @param characterId integer | nil
function selector:select(characterId)
self.id = characterId
end
-- function selector:deselect()
-- self.id = nil
-- end
--- TODO: сделать обработчик селектора
function selector:update(dt)
if not Tree.controls:isJustPressed("select") then return end
local mousePosition = Tree.level.camera:toWorldPosition(Vec3 { love.mouse.getX(), love.mouse.getY() }):floor()
if mousePosition.x >= Tree.level.size.x or mousePosition.y >= Tree.level.size.y or mousePosition.y < 0 or mousePosition.x < 0 then
return
end
local characterId = Tree.level.characterGrid:get(mousePosition.x, mousePosition.y)
if not characterId and self.id then -- временная обработка события "побежать к точке"
local char = Tree.level.characters[self.id]
local charPos = char.logic.mapLogic.position
local path = (require "lib.pathfinder")(charPos, mousePosition)
path:pop_front()
print("Following path: ")
for p in path:values() do print(p) end
char:followPath(path)
end
self:select(characterId)
print("[Selector]:", mousePosition, characterId and "selected " .. characterId or "deselected")
end
return {
new = new
}