65 lines
1.5 KiB
Lua
65 lines
1.5 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ControllerSideMenuBtn = HL.Class('ControllerSideMenuBtn', UIWidgetBase)
|
|
|
|
|
|
|
|
ControllerSideMenuBtn.m_extraArgs = HL.Field(HL.Table)
|
|
|
|
|
|
|
|
|
|
|
|
ControllerSideMenuBtn._OnFirstTimeInit = HL.Override() << function(self)
|
|
self.view.button.onClick:AddListener(function()
|
|
self:_OpenMenu()
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
|
|
ControllerSideMenuBtn.InitControllerSideMenuBtn = HL.Method(HL.Opt(HL.Table)) << function(self, extraArgs)
|
|
self:_FirstTimeInit()
|
|
self.m_extraArgs = extraArgs or {}
|
|
end
|
|
|
|
|
|
|
|
ControllerSideMenuBtn._OpenMenu = HL.Method() << function(self)
|
|
local args = {
|
|
title = Language[self.view.menuBtnList.title],
|
|
menuBtnList = self.view.menuBtnList,
|
|
btnInfos = {},
|
|
hintPlaceholder = self:GetUICtrl().view.controllerHintPlaceholder,
|
|
}
|
|
|
|
local csCount = self.view.menuBtnList.menuItems.Count
|
|
for k, v in pairs(self.view.menuBtnList.menuItems) do
|
|
if v:IsValid() then
|
|
v.priority = k
|
|
table.insert(args.btnInfos, v)
|
|
end
|
|
end
|
|
if self.m_extraArgs.extraBtnInfos then
|
|
for k, v in ipairs(self.m_extraArgs.extraBtnInfos) do
|
|
v.priority = v.priority or (csCount + k)
|
|
table.insert(args.btnInfos, v)
|
|
end
|
|
end
|
|
table.sort(args.btnInfos, Utils.genSortFunction({"priority"}, true))
|
|
|
|
if self.m_extraArgs then
|
|
setmetatable(args, { __index = self.m_extraArgs })
|
|
end
|
|
UIManager:Open(PanelId.ControllerSideMenu, args)
|
|
end
|
|
|
|
HL.Commit(ControllerSideMenuBtn)
|
|
return ControllerSideMenuBtn
|