193 lines
		
	
	
		
			No EOL
		
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			No EOL
		
	
	
		
			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 |