385 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			385 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---
 | |
| --- Generated by EmmyLua(https://github.com/EmmyLua)
 | |
| --- Created by Dylan Malandain.
 | |
| --- DateTime: 21/04/2019 21:20
 | |
| ---
 | |
| 
 | |
| ---CreateMenu
 | |
| ---@param Title string
 | |
| ---@param Subtitle string
 | |
| ---@param X number
 | |
| ---@param Y number
 | |
| ---@param TextureDictionary string
 | |
| ---@param TextureName string
 | |
| ---@param R number
 | |
| ---@param G number
 | |
| ---@param B number
 | |
| ---@param A number
 | |
| ---@return RageUIMenus
 | |
| ---@public
 | |
| function RageUI.CreateMenu(Title, Subtitle, X, Y, TextureDictionary, TextureName, R, G, B, A)
 | |
| 
 | |
|     ---@type table
 | |
|     local Menu = {}
 | |
|     Menu.Display = {};
 | |
| 
 | |
|     Menu.InstructionalButtons = {}
 | |
| 
 | |
|     Menu.Display.Header = true;
 | |
|     Menu.Display.Glare = true;
 | |
|     Menu.Display.Subtitle = true;
 | |
|     Menu.Display.Background = true;
 | |
|     Menu.Display.Navigation = true;
 | |
|     Menu.Display.InstructionalButton = true;
 | |
| 
 | |
|     Menu.Title = Title or ""
 | |
|     Menu.TitleFont = 6
 | |
|     Menu.TitleScale = 1.0
 | |
|     Menu.Subtitle = string.upper(Subtitle) or nil
 | |
|     Menu.SubtitleHeight = -37
 | |
|     Menu.Description = nil
 | |
|     Menu.DescriptionHeight = RageUI.Settings.Items.Description.Background.Height
 | |
|     Menu.X = X or 0
 | |
|     Menu.Y = Y or 0
 | |
|     Menu.Parent = nil
 | |
|     Menu.WidthOffset = RageUI.UI.Style[RageUI.UI.Current].Width
 | |
|     Menu.Open = false
 | |
|     Menu.Controls = RageUI.Settings.Controls
 | |
|     Menu.Index = 1
 | |
|     Menu.Sprite = { Dictionary = TextureDictionary or "commonmenu", Texture = TextureName or "interaction_bgd", Color = { R = R, G = G, B = B, A = A } }
 | |
|     Menu.Rectangle = nil
 | |
|     Menu.Pagination = { Minimum = 1, Maximum = 10, Total = 10 }
 | |
|     Menu.Safezone = true
 | |
|     Menu.SafeZoneSize = nil
 | |
|     Menu.EnableMouse = false
 | |
|     Menu.Options = 0
 | |
|     Menu.Closable = true
 | |
|     Menu.InstructionalScaleform = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS")
 | |
|     Menu.CursorStyle = 1
 | |
| 
 | |
|     if string.starts(Menu.Subtitle, "~") then
 | |
|         Menu.PageCounterColour = string.sub(Menu.Subtitle, 1, 3)
 | |
|     else
 | |
|         Menu.PageCounterColour = ""
 | |
|     end
 | |
| 
 | |
|     if Menu.Subtitle ~= "" then
 | |
|         local SubtitleLineCount = GetLineCount(Menu.Subtitle, Menu.X + RageUI.Settings.Items.Subtitle.Text.X, Menu.Y + RageUI.Settings.Items.Subtitle.Text.Y, 0, RageUI.Settings.Items.Subtitle.Text.Scale, 245, 245, 245, 255, nil, false, false, RageUI.Settings.Items.Subtitle.Background.Width + Menu.WidthOffset)
 | |
| 
 | |
|         if SubtitleLineCount > 1 then
 | |
|             Menu.SubtitleHeight = 18 * SubtitleLineCount
 | |
|         else
 | |
|             Menu.SubtitleHeight = 0
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     Citizen.CreateThread(function()
 | |
|         if not HasScaleformMovieLoaded(Menu.InstructionalScaleform) then
 | |
|             Menu.InstructionalScaleform = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS")
 | |
|             while not HasScaleformMovieLoaded(Menu.InstructionalScaleform) do
 | |
|                 Citizen.Wait(0)
 | |
|             end
 | |
|         end
 | |
|     end)
 | |
| 
 | |
|     Citizen.CreateThread(function()
 | |
|         local ScaleformMovie = RequestScaleformMovie("MP_MENU_GLARE")
 | |
|         while not HasScaleformMovieLoaded(ScaleformMovie) do
 | |
|             Citizen.Wait(0)
 | |
|         end
 | |
|     end)
 | |
| 
 | |
|     return setmetatable(Menu, RageUI.Menus)
 | |
| end
 | |
| 
 | |
| ---CreateSubMenu
 | |
| ---@param ParentMenu function
 | |
| ---@param Title string
 | |
| ---@param Subtitle string
 | |
| ---@param X number
 | |
| ---@param Y number
 | |
| ---@param TextureDictionary string
 | |
| ---@param TextureName string
 | |
| ---@param R number
 | |
| ---@param G number
 | |
| ---@param B number
 | |
| ---@param A number
 | |
| ---@return RageUIMenus
 | |
| ---@public
 | |
| function RageUI.CreateSubMenu(ParentMenu, Title, Subtitle, X, Y, TextureDictionary, TextureName, R, G, B, A)
 | |
|     if ParentMenu ~= nil then
 | |
|         if ParentMenu() then
 | |
|             local Menu = RageUI.CreateMenu(Title or ParentMenu.Title, string.upper(Subtitle) or string.upper(ParentMenu.Subtitle), X or ParentMenu.X, Y or ParentMenu.Y)
 | |
|             Menu.Parent = ParentMenu
 | |
|             Menu.WidthOffset = ParentMenu.WidthOffset
 | |
|             Menu.Safezone = ParentMenu.Safezone
 | |
|             if ParentMenu.Sprite then
 | |
|                 Menu.Sprite = { Dictionary = TextureDictionary or ParentMenu.Sprite.Dictionary, Texture = TextureName or ParentMenu.Sprite.Texture, Color = { R = R or ParentMenu.Sprite.Color.R, G = G or ParentMenu.Sprite.Color.G, B = B or ParentMenu.Sprite.Color.B, A = A or ParentMenu.Sprite.Color.A } }
 | |
|             else
 | |
|                 Menu.Rectangle = ParentMenu.Rectangle
 | |
|             end
 | |
|             return setmetatable(Menu, RageUI.Menus)
 | |
|         else
 | |
|             return nil
 | |
|         end
 | |
|     else
 | |
|         return nil
 | |
|     end
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:DisplayHeader(boolean)
 | |
|     self.Display.Header = boolean;
 | |
|     return self.Display.Header;
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:DisplayGlare(boolean)
 | |
|     self.Display.Glare = boolean;
 | |
|     return self.Display.Glare;
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:DisplaySubtitle(boolean)
 | |
|     self.Display.Subtitle = boolean;
 | |
|     return self.Display.Subtitle;
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:DisplayNavigation(boolean)
 | |
|     self.Display.Navigation = boolean;
 | |
|     return self.Display.Navigation;
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:DisplayInstructionalButton(boolean)
 | |
|     self.Display.InstructionalButton = boolean;
 | |
|     return self.Display.InstructionalButton;
 | |
| end
 | |
| 
 | |
| ---SetTitle
 | |
| ---@param Title string
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetTitle(Title)
 | |
|     self.Title = Title
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:SetStyleSize(Value)
 | |
|     local witdh
 | |
|     if Value >= 0 and Value <= 100 then
 | |
|         witdh = Value
 | |
|     else
 | |
|         witdh = 100
 | |
|     end
 | |
|     self.WidthOffset = witdh
 | |
| end
 | |
| 
 | |
| ---GetStyleSize
 | |
| ---@return any
 | |
| ---@public
 | |
| function RageUI.Menus:GetStyleSize()
 | |
|     if (self.WidthOffset == 100) then
 | |
|         return "RageUI"
 | |
|     elseif (self.WidthOffset == 0) then
 | |
|         return "NativeUI";
 | |
|     else
 | |
|         return self.WidthOffset;
 | |
|     end
 | |
| end
 | |
| 
 | |
| ---SetStyleSize
 | |
| ---@param Int string
 | |
| ---@return void
 | |
| ---@public
 | |
| function RageUI.Menus:SetCursorStyle(Int)
 | |
|     self.CursorStyle = Int or 1 or 0
 | |
|     SetMouseCursorSprite(Int)
 | |
| end
 | |
| 
 | |
| ---ResetCursorStyle
 | |
| ---@return void
 | |
| ---@public
 | |
| function RageUI.Menus:ResetCursorStyle()
 | |
|     self.CursorStyle = 1
 | |
|     SetMouseCursorSprite(1)
 | |
| end
 | |
| 
 | |
| ---UpdateCursorStyle
 | |
| ---@return void
 | |
| ---@public
 | |
| function RageUI.Menus:UpdateCursorStyle()
 | |
|     SetMouseCursorSprite(self.CursorStyle)
 | |
| end
 | |
| 
 | |
| ---RefreshIndex
 | |
| ---@return void
 | |
| ---@public
 | |
| function RageUI.Menus:RefreshIndex()
 | |
|     self.Index = 1
 | |
| end
 | |
| 
 | |
| ---SetSubtitle
 | |
| ---@param Subtitle string
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetSubtitle(Subtitle)
 | |
| 
 | |
|     self.Subtitle = string.upper(Subtitle) or string.upper(self.Subtitle)
 | |
| 
 | |
|     if string.starts(self.Subtitle, "~") then
 | |
|         self.PageCounterColour = string.sub(self.Subtitle, 1, 3)
 | |
|     else
 | |
|         self.PageCounterColour = ""
 | |
|     end
 | |
|     if self.Subtitle ~= "" then
 | |
|         local SubtitleLineCount = GetLineCount(self.Subtitle, self.X + RageUI.Settings.Items.Subtitle.Text.X, self.Y + RageUI.Settings.Items.Subtitle.Text.Y, 0, RageUI.Settings.Items.Subtitle.Text.Scale, 245, 245, 245, 255, nil, false, false, RageUI.Settings.Items.Subtitle.Background.Width + self.WidthOffset)
 | |
| 
 | |
|         if SubtitleLineCount > 1 then
 | |
|             self.SubtitleHeight = 18 * SubtitleLineCount
 | |
|         else
 | |
|             self.SubtitleHeight = 0
 | |
|         end
 | |
| 
 | |
|     else
 | |
|         self.SubtitleHeight = -37
 | |
|     end
 | |
| end
 | |
| 
 | |
| ---PageCounter
 | |
| ---@param Subtitle string
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetPageCounter(Subtitle)
 | |
|     self.PageCounter = Subtitle
 | |
| end
 | |
| 
 | |
| ---EditSpriteColor
 | |
| ---@param Colors table
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:EditSpriteColor(color)
 | |
|     if self.Sprite.Dictionary == "commonmenu" then
 | |
|         self.Sprite.Color = color
 | |
|     end
 | |
| end
 | |
| ---SetPosition
 | |
| ---@param X number
 | |
| ---@param Y number
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetPosition(X, Y)
 | |
|     self.X = tonumber(X) or self.X
 | |
|     self.Y = tonumber(Y) or self.Y
 | |
| end
 | |
| 
 | |
| ---SetTotalItemsPerPage
 | |
| ---@param Value number
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetTotalItemsPerPage(Value)
 | |
|     self.Pagination.Total = tonumber(Value) or self.Pagination.Total
 | |
| end
 | |
| 
 | |
| ---SetRectangleBanner
 | |
| ---@param R number
 | |
| ---@param G number
 | |
| ---@param B number
 | |
| ---@param A number
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetRectangleBanner(R, G, B, A)
 | |
|     self.Rectangle = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }
 | |
|     self.Sprite = nil
 | |
| end
 | |
| 
 | |
| ---SetSpriteBanner
 | |
| ---@param TextureDictionary string
 | |
| ---@param Texture string
 | |
| ---@return nil
 | |
| ---@public
 | |
| function RageUI.Menus:SetSpriteBanner(TextureDictionary, Texture)
 | |
|     self.Sprite = { Dictionary = TextureDictionary or "commonmenu", Texture = Texture or "interaction_bgd" }
 | |
|     self.Rectangle = nil
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:Closable(boolean)
 | |
|     if type(boolean) == "boolean" then
 | |
|         self.Closable = boolean
 | |
|     else
 | |
|         error("Type is not boolean")
 | |
|     end
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:AddInstructionButton(button)
 | |
|     if type(button) == "table" and #button == 2 then
 | |
|         table.insert(self.InstructionalButtons, button)
 | |
|         self.UpdateInstructionalButtons(true);
 | |
|     end
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:RemoveInstructionButton(button)
 | |
|     if type(button) == "table" then
 | |
|         for i = 1, #self.InstructionalButtons do
 | |
|             if button == self.InstructionalButtons[i] then
 | |
|                 table.remove(self.InstructionalButtons, i)
 | |
|                 self.UpdateInstructionalButtons(true);
 | |
|                 break
 | |
|             end
 | |
|         end
 | |
|     else
 | |
|         if tonumber(button) then
 | |
|             if self.InstructionalButtons[tonumber(button)] then
 | |
|                 table.remove(self.InstructionalButtons, tonumber(button))
 | |
|                 self.UpdateInstructionalButtons(true);
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| end
 | |
| 
 | |
| function RageUI.Menus:UpdateInstructionalButtons(Visible)
 | |
| 
 | |
|     if not Visible then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     BeginScaleformMovieMethod(self.InstructionalScaleform, "CLEAR_ALL")
 | |
|     EndScaleformMovieMethod()
 | |
| 
 | |
|     BeginScaleformMovieMethod(self.InstructionalScaleform, "TOGGLE_MOUSE_BUTTONS")
 | |
|     ScaleformMovieMethodAddParamInt(0)
 | |
|     EndScaleformMovieMethod()
 | |
| 
 | |
|     BeginScaleformMovieMethod(self.InstructionalScaleform, "CREATE_CONTAINER")
 | |
|     EndScaleformMovieMethod()
 | |
| 
 | |
|     BeginScaleformMovieMethod(self.InstructionalScaleform, "SET_DATA_SLOT")
 | |
|     ScaleformMovieMethodAddParamInt(0)
 | |
|     PushScaleformMovieMethodParameterButtonName(GetControlInstructionalButton(2, 176, 0))
 | |
|     PushScaleformMovieMethodParameterString(GetLabelText("HUD_INPUT2"))
 | |
|     EndScaleformMovieMethod()
 | |
| 
 | |
|     if self.Closable then
 | |
|         BeginScaleformMovieMethod(self.InstructionalScaleform, "SET_DATA_SLOT")
 | |
|         ScaleformMovieMethodAddParamInt(1)
 | |
|         PushScaleformMovieMethodParameterButtonName(GetControlInstructionalButton(2, 177, 0))
 | |
|         PushScaleformMovieMethodParameterString(GetLabelText("HUD_INPUT3"))
 | |
|         EndScaleformMovieMethod()
 | |
|     end
 | |
| 
 | |
|     local count = 2
 | |
| 
 | |
|     if (self.InstructionalButtons ~= nil) then
 | |
|         for i = 1, #self.InstructionalButtons do
 | |
|             if self.InstructionalButtons[i] then
 | |
|                 if #self.InstructionalButtons[i] == 2 then
 | |
|                     BeginScaleformMovieMethod(self.InstructionalScaleform, "SET_DATA_SLOT")
 | |
|                     ScaleformMovieMethodAddParamInt(count)
 | |
|                     PushScaleformMovieMethodParameterButtonName(self.InstructionalButtons[i][1])
 | |
|                     PushScaleformMovieMethodParameterString(self.InstructionalButtons[i][2])
 | |
|                     EndScaleformMovieMethod()
 | |
|                     count = count + 1
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     BeginScaleformMovieMethod(self.InstructionalScaleform, "DRAW_INSTRUCTIONAL_BUTTONS")
 | |
|     ScaleformMovieMethodAddParamInt(-1)
 | |
|     EndScaleformMovieMethod()
 | |
| end
 | 
