local Rect = require "lib.simple_ui.rect" --- @class UIElement --- @field bounds Rect Прямоугольник, в границах которого размещается элемент. Размеры и положение в *локальных* координатах --- @field transform love.Transform Преобразование из локальных координат элемента (bounds) в экранные координаты local uiElement = {} uiElement.__index = uiElement function uiElement:update(dt) end function uiElement:draw() end function uiElement:hitTest(screenX, screenY) local r, g, b, a = love.graphics.getColor() if a == 0 then return false end local lx, ly = self.transform:inverseTransformPoint(screenX, screenY) return self.bounds:hasPoint(lx, ly) end --- @generic T : UIElement --- @param values table --- @param self T --- @return T function uiElement.new(self, values) values.bounds = values.bounds or Rect {} values.transform = values.transform or love.math.newTransform() return setmetatable(values, self) end return uiElement