From c658f68e147448d2845106595c34633f49dc31a4 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 22 Aug 2021 12:39:44 +0200 Subject: [PATCH] feat: add depth sorting --- .../birb/modules/gui/elements/parent.lua | 2 +- .../birb/modules/gui/mixins/elements.lua | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/sonic-radiance.love/birb/modules/gui/elements/parent.lua b/sonic-radiance.love/birb/modules/gui/elements/parent.lua index e672886..f0653b0 100644 --- a/sonic-radiance.love/birb/modules/gui/elements/parent.lua +++ b/sonic-radiance.love/birb/modules/gui/elements/parent.lua @@ -20,7 +20,7 @@ end function GuiElement:register() local gui = self:getGui() - gui:addElement(self.name, self) + self.creationId = gui:addElement(self.name, self) end function GuiElement:destroy() diff --git a/sonic-radiance.love/birb/modules/gui/mixins/elements.lua b/sonic-radiance.love/birb/modules/gui/mixins/elements.lua index a5270a8..ddfb608 100644 --- a/sonic-radiance.love/birb/modules/gui/mixins/elements.lua +++ b/sonic-radiance.love/birb/modules/gui/mixins/elements.lua @@ -3,10 +3,13 @@ local ElementList = Object:extend() function ElementList:initElements() self.elements = {} self.focusedElem = nil + self.nbrElement = 0 end function ElementList:addElement(name, element) + self.nbrElement = self.nbrElement + 1 self.elements[name] = element + return self.nbrElement end function ElementList:deleteElement(name) @@ -22,6 +25,15 @@ function ElementList:getVisibleElement(topLayer) end end end + + table.sort(visibleList, function (a, b) + if (a.depth == b.depth) then + return (a.creationId < b.creationId) + else + return (a.depth > b.depth) + end + end) + return visibleList end