31 lines
1.1 KiB
Lua
31 lines
1.1 KiB
Lua
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
|