169 lines
		
	
	
		
			No EOL
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			No EOL
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
UIMenuSliderItem = setmetatable({}, UIMenuSliderItem)
 | 
						|
UIMenuSliderItem.__index = UIMenuSliderItem
 | 
						|
UIMenuSliderItem.__call = function() return "UIMenuItem", "UIMenuSliderItem" end
 | 
						|
 | 
						|
function UIMenuSliderItem.New(Text, Items, Index, Description, Divider)
 | 
						|
	if type(Items) ~= "table" then Items = {} end
 | 
						|
	if Index == 0 then Index = 1 end
 | 
						|
	local _UIMenuSliderItem = {
 | 
						|
		Base = UIMenuItem.New(Text or "", Description or ""),
 | 
						|
		Items = Items,
 | 
						|
		ShowDivider = tobool(Divider),
 | 
						|
		LeftArrow = Sprite.New("commonmenutu", "arrowleft", 0, 105, 15, 15),
 | 
						|
		RightArrow = Sprite.New("commonmenutu", "arrowright", 0, 105, 15, 15),
 | 
						|
		Background = UIResRectangle.New(0, 0, 150, 9, 4, 32, 57, 255),
 | 
						|
		Slider = UIResRectangle.New(0, 0, 75, 9, 57, 116, 200, 255),
 | 
						|
		Divider = UIResRectangle.New(0, 0, 2.5, 20, 245, 245, 245, 255),
 | 
						|
		_Index = tonumber(Index) or 1,
 | 
						|
		OnSliderChanged = function(menu, item, newindex) end,
 | 
						|
		OnSliderSelected = function(menu, item, newindex) end,
 | 
						|
	}
 | 
						|
	return setmetatable(_UIMenuSliderItem, UIMenuSliderItem)
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:SetParentMenu(Menu)
 | 
						|
	if Menu() == "UIMenu" then
 | 
						|
		self.Base.ParentMenu = Menu
 | 
						|
	else
 | 
						|
		return self.Base.ParentMenu
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Position(Y)
 | 
						|
	if tonumber(Y) then
 | 
						|
		self.Background:Position(250 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 158.5 + self.Base._Offset.Y)
 | 
						|
		self.Slider:Position(250 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 158.5 + self.Base._Offset.Y)
 | 
						|
		self.Divider:Position(323.5 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 153 + self.Base._Offset.Y)
 | 
						|
		self.LeftArrow:Position(235 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 155.5 + Y + self.Base._Offset.Y)
 | 
						|
		self.RightArrow:Position(400 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 155.5 + Y + self.Base._Offset.Y)
 | 
						|
		self.Base:Position(Y)
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Selected(bool)
 | 
						|
	if bool ~= nil then
 | 
						|
		self.Base._Selected = tobool(bool)
 | 
						|
	else
 | 
						|
		return self.Base._Selected
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Hovered(bool)
 | 
						|
	if bool ~= nil then
 | 
						|
		self.Base._Hovered = tobool(bool)
 | 
						|
	else
 | 
						|
		return self.Base._Hovered
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Enabled(bool)
 | 
						|
	if bool ~= nil then
 | 
						|
		self.Base._Enabled = tobool(bool)
 | 
						|
	else
 | 
						|
		return self.Base._Enabled
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Description(str)
 | 
						|
	if tostring(str) and str ~= nil then
 | 
						|
		self.Base._Description = tostring(str)
 | 
						|
	else
 | 
						|
		return self.Base._Description
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Offset(X, Y)
 | 
						|
	if tonumber(X) or tonumber(Y) then
 | 
						|
		if tonumber(X) then
 | 
						|
			self.Base._Offset.X = tonumber(X)
 | 
						|
		end
 | 
						|
		if tonumber(Y) then
 | 
						|
			self.Base._Offset.Y = tonumber(Y)
 | 
						|
		end
 | 
						|
	else
 | 
						|
		return self.Base._Offset
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Text(Text)
 | 
						|
	if tostring(Text) and Text ~= nil then
 | 
						|
		self.Base.Text:Text(tostring(Text))
 | 
						|
	else
 | 
						|
		return self.Base.Text:Text()
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Index(Index)
 | 
						|
	if tonumber(Index) then
 | 
						|
		if tonumber(Index) > #self.Items then
 | 
						|
			self._Index = 1
 | 
						|
		elseif tonumber(Index) < 1 then
 | 
						|
			self._Index = #self.Items
 | 
						|
		else
 | 
						|
			self._Index = tonumber(Index)
 | 
						|
		end
 | 
						|
	else
 | 
						|
		return self._Index
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:ItemToIndex(Item)
 | 
						|
	for i = 1, #self.Items do
 | 
						|
		if type(Item) == type(self.Items[i]) and Item == self.Items[i] then
 | 
						|
			return i
 | 
						|
		end
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:IndexToItem(Index)
 | 
						|
	if tonumber(Index) then
 | 
						|
		if tonumber(Index) == 0 then Index = 1 end
 | 
						|
		if self.Items[tonumber(Index)] then
 | 
						|
			return self.Items[tonumber(Index)]
 | 
						|
		end
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:SetLeftBadge()
 | 
						|
	error("This item does not support badges")
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:SetRightBadge()
 | 
						|
	error("This item does not support badges")
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:RightLabel()
 | 
						|
	error("This item does not support a right label")
 | 
						|
end
 | 
						|
 | 
						|
function UIMenuSliderItem:Draw()
 | 
						|
	self.Base:Draw()
 | 
						|
 | 
						|
	if self:Enabled() then
 | 
						|
		if self:Selected() then
 | 
						|
			self.LeftArrow:Colour(0, 0, 0, 255)
 | 
						|
			self.RightArrow:Colour(0, 0, 0, 255)
 | 
						|
		else
 | 
						|
			self.LeftArrow:Colour(245, 245, 245, 255)
 | 
						|
			self.RightArrow:Colour(245, 245, 245, 255)
 | 
						|
		end
 | 
						|
	else
 | 
						|
		self.LeftArrow:Colour(163, 159, 148, 255)
 | 
						|
		self.RightArrow:Colour(163, 159, 148, 255)
 | 
						|
	end
 | 
						|
	
 | 
						|
	local Offset = ((self.Background.Width - self.Slider.Width)/(#self.Items - 1)) * (self._Index-1)
 | 
						|
 | 
						|
	self.Slider:Position(250 + self.Base._Offset.X + Offset + self.Base.ParentMenu.WidthOffset, self.Slider.Y)
 | 
						|
 | 
						|
	if self:Selected() then
 | 
						|
		self.LeftArrow:Draw()
 | 
						|
		self.RightArrow:Draw()
 | 
						|
	end
 | 
						|
 | 
						|
	self.Background:Draw()
 | 
						|
	self.Slider:Draw()
 | 
						|
	if self.ShowDivider then
 | 
						|
		self.Divider:Draw()
 | 
						|
	end
 | 
						|
end |