mirror of
https://github.com/TangentFoxy/Pop.Box.git
synced 2024-12-15 12:44:20 +00:00
135 lines
3.6 KiB
Lua
135 lines
3.6 KiB
Lua
local graphics
|
|
graphics = love.graphics
|
|
local sub, len
|
|
do
|
|
local _obj_0 = string
|
|
sub, len = _obj_0.sub, _obj_0.len
|
|
end
|
|
local path = sub(..., 1, len(...) - len("/box"))
|
|
local element = require(tostring(path) .. "/element")
|
|
local box
|
|
do
|
|
local _class_0
|
|
local _parent_0 = element
|
|
local _base_0 = {
|
|
draw = function(self)
|
|
if self.data.background then
|
|
if type(self.data.background) == "table" then
|
|
graphics.setColor(self.data.background)
|
|
graphics.rectangle("fill", self.data.x, self.data.y, self.data.w, self.data.h)
|
|
else
|
|
local w, h = self.data.background:getDimensions()
|
|
w = self.data.w / w
|
|
h = self.data.h / h
|
|
graphics.setColor(255, 255, 255, 255)
|
|
graphics.draw(self.data.background, self.data.x, self.data.y, 0, w, h)
|
|
end
|
|
end
|
|
return self
|
|
end,
|
|
debugDraw = function(self)
|
|
graphics.setLineWidth(0.5)
|
|
graphics.setColor(0, 0, 0, 100)
|
|
graphics.rectangle("fill", self.data.x, self.data.y, self.data.w, self.data.h)
|
|
graphics.setColor(0, 0, 200, 200)
|
|
graphics.rectangle("line", self.data.x, self.data.y, self.data.w, self.data.h)
|
|
graphics.setColor(200, 200, 255, 255)
|
|
graphics.print("b", self.data.x, self.data.y)
|
|
return self
|
|
end,
|
|
setBackground = function(self, background)
|
|
self.data.background = background
|
|
return self
|
|
end,
|
|
getBackground = function(self)
|
|
return self.data.background
|
|
end,
|
|
setColor = function(self, r, g, b, a)
|
|
if a == nil then
|
|
a = 255
|
|
end
|
|
if type(r) == "table" then
|
|
self.data.background = r
|
|
else
|
|
self.data.background = {
|
|
r,
|
|
g,
|
|
b,
|
|
a
|
|
}
|
|
end
|
|
return self
|
|
end,
|
|
getColor = function(self)
|
|
if type(self.data.background) == "table" then
|
|
return unpack(self.data.background)
|
|
else
|
|
return error("Box \"" .. tostring(self) .. "\" doesn't have a color.")
|
|
end
|
|
end
|
|
}
|
|
_base_0.__index = _base_0
|
|
setmetatable(_base_0, _parent_0.__base)
|
|
_class_0 = setmetatable({
|
|
__init = function(self, parent, background)
|
|
if background == nil then
|
|
background = false
|
|
end
|
|
if type(background) == "table" then
|
|
for k, v in pairs(background) do
|
|
if type(k) ~= "number" then
|
|
_class_0.__parent.__init(self, parent, background)
|
|
if not background.w then
|
|
self.data.w = 20
|
|
end
|
|
if not background.h then
|
|
self.data.h = 20
|
|
end
|
|
if self.data.background == nil then
|
|
self.data.background = false
|
|
end
|
|
return
|
|
end
|
|
end
|
|
else
|
|
_class_0.__parent.__init(self, parent)
|
|
if not self.data.w then
|
|
self.data.w = 20
|
|
end
|
|
if not self.data.h then
|
|
self.data.h = 20
|
|
end
|
|
if not self.data.background then
|
|
self.data.background = background
|
|
end
|
|
end
|
|
end,
|
|
__base = _base_0,
|
|
__name = "box",
|
|
__parent = _parent_0
|
|
}, {
|
|
__index = function(cls, name)
|
|
local val = rawget(_base_0, name)
|
|
if val == nil then
|
|
local parent = rawget(cls, "__parent")
|
|
if parent then
|
|
return parent[name]
|
|
end
|
|
else
|
|
return val
|
|
end
|
|
end,
|
|
__call = function(cls, ...)
|
|
local _self_0 = setmetatable({}, _base_0)
|
|
cls.__init(_self_0, ...)
|
|
return _self_0
|
|
end
|
|
})
|
|
_base_0.__class = _class_0
|
|
if _parent_0.__inherited then
|
|
_parent_0.__inherited(_parent_0, _class_0)
|
|
end
|
|
box = _class_0
|
|
return _class_0
|
|
end
|