feat: initial gui version of radiance's menus

This commit is contained in:
Kazhnuz 2021-08-31 19:12:40 +02:00
parent 759daf5ec0
commit 83a89dc69b
2 changed files with 103 additions and 0 deletions

View file

@ -0,0 +1,71 @@
local ParentMenu = require "birb.modules.gui.textmenu"
local BoxedList = ParentMenu:extend()
local gui = require "game.modules.gui"
function BoxedList:new(name, x, y, w, slotNumber, isBoxed, smallborder)
BoxedList.super.new(self, name, "small", x, y, w, slotNumber, 0)
self.paddingLeft = 12
self.paddingRight = 4
self.cursorTexture = love.graphics.newImage("assets/gui/cursor-menulist.png")
self.cursorTransition = 0
self.isBoxed = isBoxed
if (isBoxed) then
local border = self.h + 16
if (smallborder == true) then
border = self.h + 8
end
self.box = gui.newTextBox("assets/gui/dialogbox.png", w + 8, border)
end
end
function BoxedList:finalize()
self:setCancelWidget()
end
function BoxedList:update(dt)
BoxedList.super.update(self, dt)
self:updateCursorPosition(dt)
end
function BoxedList:updateCursorPosition(dt)
local relativecursor = self.widget.selected - self.view.firstSlot
local transition = self.cursorTransition - relativecursor
if math.abs(transition) < 0.1 then
self.cursorTransition = relativecursor
else
local speed = dt * 45
local movement = ((relativecursor) - (self.cursorTransition))
self.cursorTransition = (self.cursorTransition) + movement * speed
end
end
function BoxedList:drawCursor()
local x, y = self:getCursorPosition()
love.graphics.draw(self.cursorTexture, x, y)
end
function BoxedList:getCursorPosition()
local addition = self.lineHeight
local x = self.x + 6
local y = self.y + ((self.cursorTransition) * addition) + 1
return x, y
end
function BoxedList:draw()
if (self.isBoxed) then
local dy = 8
if (self.smallborder) then
dy = 4
end
local w, h = self.box:getDimensions()
local diff = (w-self.w)/2
love.graphics.draw(self.box, self.x - self.ox - diff, self.y - self.oy - dy)
end
BoxedList.super.draw(self)
end
return BoxedList

View file

@ -0,0 +1,32 @@
local ParentMenu = require "birb.modules.gui.textmenu"
local FancyMenu = ParentMenu:extend()
local gui = require "game.modules.gui"
function FancyMenu:new(name, x, y, w, itemNumber, haveBiseau)
FancyMenu.super.new(self, name, "small", x, y, w, itemNumber)
self.biseau = utils.math.either(haveBiseau, 8, 0)
self.itemNumber = itemNumber
self.box = gui.newChoiceBack(self.w + 24)
self.cursorTexture = love.graphics.newImage("assets/gui/cursor-menulist.png")
end
function FancyMenu:getDimensions()
local w, h = FancyMenu.super.getDimensions(self)
return w + (self.biseau*self.itemNumber), h
end
function FancyMenu:getListPart(i)
local x, y, w, h = FancyMenu.super.getListPart(self, i)
return x + (self.biseau*i), y, w, h
end
function FancyMenu:drawWidgetBackground(x, y, w, h)
love.graphics.draw(self.box, x - 8, y + 2)
end
function FancyMenu:drawGraphicalCursor(x, y, w, h)
love.graphics.draw(self.cursorTexture, x - 3, y + 1)
end
return FancyMenu