mirror of
https://github.com/TangentFoxy/Pop.Box.git
synced 2024-12-15 12:44:20 +00:00
95 lines
1.9 KiB
Lua
95 lines
1.9 KiB
Lua
local lg = love.graphics
|
|
|
|
local path = string.sub(..., 1, string.len(...) - string.len("/elements/text"))
|
|
local class = require(path .. "/lib/middleclass")
|
|
local element = require(path .. "/elements/element")
|
|
|
|
local text = class("pop.text", element)
|
|
|
|
function text:initialize(pop, parent, text, color)
|
|
element.initialize(self, pop, parent)
|
|
|
|
self.font = lg.newFont(14)
|
|
self:setText(text or "")
|
|
self.color = color or {255, 255, 255, 255}
|
|
end
|
|
|
|
function text:draw()
|
|
lg.setColor(self.color)
|
|
lg.setFont(self.font)
|
|
lg.print(self.text, self.x, self.y)
|
|
|
|
return self
|
|
end
|
|
|
|
function text:debugDraw()
|
|
lg.setLineWidth(0.5)
|
|
lg.setColor(0, 0, 0, 100)
|
|
lg.rectangle("fill", self.x, self.y, self.w, self.h)
|
|
lg.setColor(200, 0, 0, 200)
|
|
lg.rectangle("line", self.x, self.y, self.w, self.h)
|
|
lg.setColor(255, 200, 200, 255)
|
|
lg.print("t", self.x, self.y)
|
|
end
|
|
|
|
function text:setSize()
|
|
local w = self.font:getWidth(self.text)
|
|
local h = self.font:getHeight() * (select(2, self.text:gsub("\n", "\n")) + 1)
|
|
|
|
if self.horizontal == "center" then
|
|
self.x = self.x - (w - self.w)/2
|
|
elseif self.horizontal == "right" then
|
|
self.x = self.x - (w - self.w)
|
|
end
|
|
|
|
if self.vertical == "center" then
|
|
self.y = self.y - (h - self.h)/2
|
|
elseif self.vertical == "bottom" then
|
|
self.y = self.y - (h - self.h)
|
|
end
|
|
|
|
self.w = w
|
|
self.h = h
|
|
|
|
return self
|
|
end
|
|
|
|
function text:setText(text)
|
|
self.text = text
|
|
|
|
self:setSize()
|
|
|
|
return self
|
|
end
|
|
|
|
function text:getText()
|
|
return self.text
|
|
end
|
|
|
|
function text:setFont(font)
|
|
self.font = font
|
|
self:setSize()
|
|
|
|
return self
|
|
end
|
|
|
|
function text:getFont()
|
|
return self.font
|
|
end
|
|
|
|
function text:setColor(r, g, b, a)
|
|
self.color = {r, g, b, a}
|
|
|
|
if not a then
|
|
self.color[4] = 255
|
|
end
|
|
|
|
return self
|
|
end
|
|
|
|
function text:getColor()
|
|
return self.color[1], self.color[1], self.color[3], self.color[4]
|
|
end
|
|
|
|
return text
|