From 72eb93baf704439340621c70676ebe4fb5cd4923 Mon Sep 17 00:00:00 2001 From: PeaAshMeter Date: Tue, 4 Nov 2025 01:15:42 +0300 Subject: [PATCH] Add selection tracking to selector with selected and deselected methods --- lib/level/selector.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/level/selector.lua b/lib/level/selector.lua index fb9f9f6..b175151 100644 --- a/lib/level/selector.lua +++ b/lib/level/selector.lua @@ -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 }