100 lines
		
	
	
	
		
			6.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			6.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
---@type table
 | 
						|
local Colour = {
 | 
						|
    Background = { Dictionary = "commonmenu", Texture = "gradient_bgd", Y = 4, Width = 431, Height = 112 },
 | 
						|
    LeftArrow = { Dictionary = "commonmenu", Texture = "arrowleft", X = 7.5, Y = 15, Width = 30, Height = 30 },
 | 
						|
    RightArrow = { Dictionary = "commonmenu", Texture = "arrowright", X = 393.5, Y = 15, Width = 30, Height = 30 },
 | 
						|
    Header = { X = 215.5, Y = 15, Scale = 0.35 },
 | 
						|
    Box = { X = 15, Y = 55, Width = 44.5, Height = 44.5 },
 | 
						|
    SelectedRectangle = { X = 15, Y = 47, Width = 44.5, Height = 8 },
 | 
						|
}
 | 
						|
 | 
						|
---ColourPanel
 | 
						|
---@param Title string
 | 
						|
---@param Colours thread
 | 
						|
---@param MinimumIndex number
 | 
						|
---@param CurrentIndex number
 | 
						|
---@param Callback function
 | 
						|
---@return nil
 | 
						|
---@public
 | 
						|
function RageUI.ColourPanel(Title, Colours, MinimumIndex, CurrentIndex, Action, Index)
 | 
						|
 | 
						|
    ---@type table
 | 
						|
    local CurrentMenu = RageUI.CurrentMenu;
 | 
						|
 | 
						|
    if CurrentMenu ~= nil then
 | 
						|
        if CurrentMenu() and (CurrentMenu.Index == Index) then
 | 
						|
 | 
						|
            ---@type number
 | 
						|
            local Maximum = (#Colours > 9) and 9 or #Colours
 | 
						|
 | 
						|
            ---@type boolean
 | 
						|
            local Hovered = RageUI.IsMouseInBounds(CurrentMenu.X + Colour.Box.X + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.Box.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, (Colour.Box.Width * Maximum), Colour.Box.Height)
 | 
						|
 | 
						|
            ---@type number
 | 
						|
            local LeftArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + Colour.LeftArrow.X + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.LeftArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.LeftArrow.Width, Colour.LeftArrow.Height)
 | 
						|
 | 
						|
            ---@type number
 | 
						|
            local RightArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + Colour.RightArrow.X + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.RightArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.RightArrow.Width, Colour.RightArrow.Height)
 | 
						|
 | 
						|
            ---@type boolean
 | 
						|
            local Selected = false
 | 
						|
 | 
						|
            RenderSprite(Colour.Background.Dictionary, Colour.Background.Texture, CurrentMenu.X, CurrentMenu.Y + Colour.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.Background.Width + CurrentMenu.WidthOffset, Colour.Background.Height)
 | 
						|
            RenderSprite(Colour.LeftArrow.Dictionary, Colour.LeftArrow.Texture, CurrentMenu.X + Colour.LeftArrow.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.LeftArrow.Width, Colour.LeftArrow.Height)
 | 
						|
            RenderSprite(Colour.RightArrow.Dictionary, Colour.RightArrow.Texture, CurrentMenu.X + Colour.RightArrow.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.RightArrow.Width, Colour.RightArrow.Height)
 | 
						|
 | 
						|
            RenderRectangle(CurrentMenu.X + Colour.SelectedRectangle.X + (Colour.Box.Width * (CurrentIndex - MinimumIndex)) + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.SelectedRectangle.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.SelectedRectangle.Width, Colour.SelectedRectangle.Height, 245, 245, 245, 255)
 | 
						|
 | 
						|
            for Index = 1, Maximum do
 | 
						|
                RenderRectangle(CurrentMenu.X + Colour.Box.X + (Colour.Box.Width * (Index - 1)) + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.Box.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.Box.Width, Colour.Box.Height, table.unpack(Colours[MinimumIndex + Index - 1]))
 | 
						|
            end
 | 
						|
 | 
						|
            RenderText((Title and Title or "") .. " (" .. CurrentIndex .. " of " .. #Colours .. ")", CurrentMenu.X + RageUI.Settings.Panels.Grid.Text.Top.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + RageUI.Settings.Panels.Grid.Text.Top.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, RageUI.Settings.Panels.Grid.Text.Top.Scale, 245, 245, 245, 255, 1)
 | 
						|
 | 
						|
            if Hovered or LeftArrowHovered or RightArrowHovered then
 | 
						|
                if RageUI.Settings.Controls.Click.Active then
 | 
						|
                    Selected = true
 | 
						|
 | 
						|
                    if LeftArrowHovered then
 | 
						|
                        CurrentIndex = CurrentIndex - 1
 | 
						|
 | 
						|
                        if CurrentIndex < 1 then
 | 
						|
                            CurrentIndex = #Colours
 | 
						|
                            MinimumIndex = #Colours - Maximum + 1
 | 
						|
                        elseif CurrentIndex < MinimumIndex then
 | 
						|
                            MinimumIndex = MinimumIndex - 1
 | 
						|
                        end
 | 
						|
                    elseif RightArrowHovered then
 | 
						|
                        CurrentIndex = CurrentIndex + 1
 | 
						|
 | 
						|
                        if CurrentIndex > #Colours then
 | 
						|
                            CurrentIndex = 1
 | 
						|
                            MinimumIndex = 1
 | 
						|
                        elseif CurrentIndex > MinimumIndex + Maximum - 1 then
 | 
						|
                            MinimumIndex = MinimumIndex + 1
 | 
						|
                        end
 | 
						|
                    elseif Hovered then
 | 
						|
                        for Index = 1, Maximum do
 | 
						|
                            if RageUI.IsMouseInBounds(CurrentMenu.X + Colour.Box.X + (Colour.Box.Width * (Index - 1)) + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.Box.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.Box.Width, Colour.Box.Height) then
 | 
						|
                                CurrentIndex = MinimumIndex + Index - 1
 | 
						|
                            end
 | 
						|
                        end
 | 
						|
                    end
 | 
						|
 | 
						|
                    if (Action.onColorChange ~= nil) then
 | 
						|
                        Action.onColorChange(MinimumIndex, CurrentIndex)
 | 
						|
                    end
 | 
						|
                end
 | 
						|
            end
 | 
						|
 | 
						|
            RageUI.ItemOffset = RageUI.ItemOffset + Colour.Background.Height + Colour.Background.Y
 | 
						|
 | 
						|
            if (Hovered or LeftArrowHovered or RightArrowHovered) and RageUI.Settings.Controls.Click.Active then
 | 
						|
                local Audio = RageUI.Settings.Audio
 | 
						|
                RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
 |