forked from Simnation/Main
193 lines
4 KiB
Lua
193 lines
4 KiB
Lua
![]() |
MenuPool = setmetatable({}, MenuPool)
|
||
|
MenuPool.__index = MenuPool
|
||
|
|
||
|
function MenuPool.New()
|
||
|
local _MenuPool = {
|
||
|
Menus = {}
|
||
|
}
|
||
|
return setmetatable(_MenuPool, MenuPool)
|
||
|
end
|
||
|
|
||
|
function MenuPool:AddSubMenu(Menu, Text, Description, KeepPosition, KeepBanner)
|
||
|
if Menu() == "UIMenu" then
|
||
|
local Item = UIMenuItem.New(tostring(Text), Description or "")
|
||
|
Menu:AddItem(Item)
|
||
|
local SubMenu
|
||
|
if KeepPosition then
|
||
|
SubMenu = UIMenu.New(Menu.Title:Text(), Text, Menu.Position.X, Menu.Position.Y)
|
||
|
else
|
||
|
SubMenu = UIMenu.New(Menu.Title:Text(), Text)
|
||
|
end
|
||
|
if KeepBanner then
|
||
|
if Menu.Logo ~= nil then
|
||
|
SubMenu.Logo = Menu.Logo
|
||
|
else
|
||
|
SubMenu.Logo = nil
|
||
|
SubMenu.Banner = Menu.Banner
|
||
|
end
|
||
|
end
|
||
|
self:Add(SubMenu)
|
||
|
Menu:BindMenuToItem(SubMenu, Item)
|
||
|
return SubMenu
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:Add(Menu)
|
||
|
if Menu() == "UIMenu" then
|
||
|
table.insert(self.Menus, Menu)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:MouseEdgeEnabled(bool)
|
||
|
if bool ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Settings.MouseEdgeEnabled = tobool(bool)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:ControlDisablingEnabled(bool)
|
||
|
if bool ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Settings.ControlDisablingEnabled = tobool(bool)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:ResetCursorOnOpen(bool)
|
||
|
if bool ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Settings.ResetCursorOnOpen = tobool(bool)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:MultilineFormats(bool)
|
||
|
if bool ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Settings.MultilineFormats = tobool(bool)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:Audio(Attribute, Setting)
|
||
|
if Attribute ~= nil and Setting ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
if Menu.Settings.Audio[Attribute] then
|
||
|
Menu.Settings.Audio[Attribute] = Setting
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:WidthOffset(offset)
|
||
|
if tonumber(offset) then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu:SetMenuWidthOffset(tonumber(offset))
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:CounterPreText(str)
|
||
|
if str ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.PageCounter.PreText = tostring(str)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:DisableInstructionalButtons(bool)
|
||
|
if bool ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Settings.InstructionalButtons = tobool(bool)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:MouseControlsEnabled(bool)
|
||
|
if bool ~= nil then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Settings.MouseControlsEnabled = tobool(bool)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:RefreshIndex()
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu:RefreshIndex()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:ProcessMenus()
|
||
|
self:ProcessControl()
|
||
|
self:ProcessMouse()
|
||
|
self:Draw()
|
||
|
end
|
||
|
|
||
|
function MenuPool:ProcessControl()
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
if Menu:Visible() then
|
||
|
Menu:ProcessControl()
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:ProcessMouse()
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
if Menu:Visible() then
|
||
|
Menu:ProcessMouse()
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:Draw()
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
if Menu:Visible() then
|
||
|
Menu:Draw()
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:IsAnyMenuOpen()
|
||
|
local open = false
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
if Menu:Visible() then
|
||
|
open = true
|
||
|
break
|
||
|
end
|
||
|
end
|
||
|
return open
|
||
|
end
|
||
|
|
||
|
function MenuPool:CloseAllMenus()
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
if Menu:Visible() then
|
||
|
Menu:Visible(false)
|
||
|
Menu.OnMenuClosed(Menu)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:SetBannerSprite(Sprite)
|
||
|
if Sprite() == "Sprite" then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu:SetBannerSprite(Sprite)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:SetBannerRectangle(Rectangle)
|
||
|
if Rectangle() == "Rectangle" then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu:SetBannerRectangle(Rectangle)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function MenuPool:TotalItemsPerPage(Value)
|
||
|
if tonumber(Value) then
|
||
|
for _, Menu in pairs(self.Menus) do
|
||
|
Menu.Pagination.Total = Value - 1
|
||
|
end
|
||
|
end
|
||
|
end
|