Add selection tracking to selector with selected and deselected methods

This commit is contained in:
PeaAshMeter 2025-11-04 01:15:42 +03:00
parent b9d2b469c8
commit f1d181fb64

View File

@ -1,5 +1,6 @@
--- @class Selector
--- @field id Id | nil
--- @field lastId Id | nil
--- @field locked boolean
local selector = {}
selector.__index = selector
@ -15,6 +16,7 @@ function selector:select(characterId)
end
function selector:update(dt)
self.lastId = self.id
if self.locked or not Tree.controls:isJustPressed("select") then return end
local mousePosition = Tree.level.camera:toWorldPosition(Vec3 { love.mouse.getX(), love.mouse.getY() }):floor()
@ -53,6 +55,16 @@ function selector:unlock()
self.locked = false
end
--- If a character was selected during this tick, returns its Id
function selector:selected()
if self.id and self.id ~= self.lastId then return self.id end
end
--- If a character was **de**selected during this tick, returns its Id
function selector:deselected()
if not self.id and self.lastId then return self.lastId end
end
return {
new = new
}