You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
4 months ago
|
GUI = Object:extend()
|
||
|
|
||
|
function GUI:new() end
|
||
|
|
||
|
function GUI:newButton(x, y, w, h, text, selected)
|
||
|
love.graphics.setColor(255, 255, 255) -- reset colours
|
||
|
|
||
|
--x,y is the top left corner of the button
|
||
|
local rounding = 30 -- used for rounding the buttons
|
||
|
local xoff = x + 10
|
||
|
local yoff = y - 10
|
||
|
local textX, textY = 0, 0
|
||
|
-- Get width and height of text
|
||
|
local tw = MenuFont:getWidth(text)
|
||
|
local th = MenuFont:getHeight(text)
|
||
|
love.graphics.setFont(MenuFont)
|
||
|
|
||
|
if not selected then
|
||
|
love.graphics.setColor(love.math.colorFromBytes(41, 134, 204))
|
||
|
love.graphics.rectangle("fill", x, y, w, h, rounding, rounding)
|
||
|
|
||
|
-- Calculate position to center the text
|
||
|
textX = x + (w - tw) / 2
|
||
|
textY = y + (h - th) / 2
|
||
|
-- Place text inside the rectangle
|
||
|
love.graphics.setColor(0, 0, 0)
|
||
|
love.graphics.print(text, textX, textY)
|
||
|
elseif selected then
|
||
|
-- If selected, raise the button and draw a shadow
|
||
|
love.graphics.setColor(love.math.colorFromBytes(0, 0, 0))
|
||
|
love.graphics.rectangle("fill", x, y, w, h, rounding, rounding) -- shadow
|
||
|
|
||
|
love.graphics.setColor(love.math.colorFromBytes(244, 67, 54))
|
||
|
love.graphics.rectangle("fill", xoff, yoff, w, h, rounding, rounding) -- button offset
|
||
|
|
||
|
-- Calculate position to center the text
|
||
|
textX = xoff + (w - tw) / 2
|
||
|
textY = yoff + (h - th) / 2
|
||
|
-- Place text inside the rectangle
|
||
|
love.graphics.setColor(1, 1, 1)
|
||
|
love.graphics.print(text, textX, textY)
|
||
|
end
|
||
|
end
|