--- @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 --- 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(Vec3 { mousePosition.x, mousePosition.y }) if not characterId and self.id then -- Когда кликаем по тайлу за персонажа в режиме каста, кастуем спелл local char = Tree.level.characters[self.id] if char.cast then char.cast:cast(char, mousePosition) char.cast = nil end end self:select(characterId) print("[Selector]:", mousePosition, characterId and "selected " .. characterId or "deselected") end return { new = new }