heroes-of-nerevelon/lib/selector.lua
PeaAshMeter 324856b26c - grid rework (the simplest solution)
- checkerboard tile testing
- character centering
2025-08-10 05:18:41 +03:00

37 lines
1004 B
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)
self:select(characterId)
print("[Selector]:", mousePosition, characterId and "selected " .. characterId or "deselected")
end
return {
new = new
}