100 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
ketchup = false
 | 
						|
dish = "Banana"
 | 
						|
quantity = 1
 | 
						|
_menuPool = MenuPool.New()
 | 
						|
mainMenu = UIMenu.New("Native UI", "~b~NATIVEUI SHOWCASE")
 | 
						|
_menuPool:Add(mainMenu)
 | 
						|
 | 
						|
function ShowNotification(text)
 | 
						|
    SetNotificationTextEntry("STRING")
 | 
						|
    AddTextComponentString(text)
 | 
						|
    DrawNotification(false, false)
 | 
						|
end
 | 
						|
 | 
						|
function AddMenuKetchup(menu)
 | 
						|
    local newitem = UIMenuCheckboxItem.New("Add ketchup?", ketchup, "Do you wish to add ketchup?")
 | 
						|
    menu:AddItem(newitem)
 | 
						|
    menu.OnCheckboxChange = function(sender, item, checked_)
 | 
						|
        if item == newitem then
 | 
						|
            ketchup = checked_
 | 
						|
            ShowNotification("~r~Ketchup status: ~b~"..tostring(ketchup))
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function AddMenuFoods(menu)
 | 
						|
    local foods = {
 | 
						|
        "Banana",
 | 
						|
        "Apple",
 | 
						|
        "Pizza",
 | 
						|
        "Quartilicious",
 | 
						|
        "Steak",
 | 
						|
        0xF00D,
 | 
						|
    }
 | 
						|
    local newitem = UIMenuListItem.New("Food", foods, 1)
 | 
						|
    menu:AddItem(newitem)
 | 
						|
    menu.OnListChange = function(sender, item, index)
 | 
						|
        if item == newitem then
 | 
						|
            dish = item:IndexToItem(index)
 | 
						|
            ShowNotification("Preparing ~b~" .. dish .. "~w~...")
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function AddMenuFoodCount(menu)
 | 
						|
    local amount = {}
 | 
						|
    for i = 1, 100 do amount[i] = i end
 | 
						|
    local newitem = UIMenuSliderItem.New("Quantity", amount, 1, false)
 | 
						|
    menu:AddItem(newitem)
 | 
						|
    menu.OnSliderChange = function(sender, item, index)
 | 
						|
        if item == newitem then
 | 
						|
            quantity = item:IndexToItem(index)
 | 
						|
            ShowNotification("Preparing ~r~" .. quantity .. " ~b~" .. dish .. "(s)~w~...")
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function AddMenuCook(menu)
 | 
						|
    local newitem = UIMenuItem.New("Cook!", "Cook the dish with the appropriate ingredients and ketchup.")
 | 
						|
    newitem:SetLeftBadge(BadgeStyle.Star)
 | 
						|
    newitem:SetRightBadge(BadgeStyle.Tick)
 | 
						|
    menu:AddItem(newitem)
 | 
						|
    menu.OnItemSelect = function(sender, item, index)
 | 
						|
        if item == newitem then
 | 
						|
            local string = "You have ordered ~r~" .. quantity .. " ~b~"..dish.."(s)~w~ ~r~with~w~ ketchup."
 | 
						|
            if not ketchup then
 | 
						|
                string = "You have ordered ~r~" .. quantity .. " ~b~"..dish.."(s)~w~ ~r~without~w~ ketchup."
 | 
						|
            end
 | 
						|
            ShowNotification(string)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    menu.OnIndexChange = function(sender, index)
 | 
						|
        if sender.Items[index] == newitem then
 | 
						|
            newitem:SetLeftBadge(BadgeStyle.None)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function AddMenuAnotherMenu(menu)
 | 
						|
    local submenu = _menuPool:AddSubMenu(menu, "Another Menu")
 | 
						|
    for i = 1, 20, 1 do
 | 
						|
        submenu:AddItem(UIMenuItem.New("PageFiller", "Sample description that takes more than one line. Moreso, it takes way more than two lines since it's so long. Wow, check out this length!"))
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
AddMenuKetchup(mainMenu)
 | 
						|
AddMenuFoods(mainMenu)
 | 
						|
AddMenuFoodCount(mainMenu)
 | 
						|
AddMenuCook(mainMenu)
 | 
						|
AddMenuAnotherMenu(mainMenu)
 | 
						|
_menuPool:RefreshIndex()
 | 
						|
 | 
						|
Citizen.CreateThread(function()
 | 
						|
    while true do
 | 
						|
        Citizen.Wait(0)
 | 
						|
        _menuPool:ProcessMenus()
 | 
						|
        if IsControlJustPressed(1, 51) then
 | 
						|
            mainMenu:Visible(not mainMenu:Visible())
 | 
						|
        end
 | 
						|
    end
 | 
						|
end)
 |