How can I simplify this function?

UIS.InputBegan:Connect(function(input, gpe)	
	if not Listening.Value then return end

	if input.UserInputType == Enum.UserInputType.Keyboard then
		local keyPressed = input.KeyCode

		if keyPressed == Enum.KeyCode.Up or keyPressed == Enum.KeyCode.W then
			if SelectedNumb == 1 then
				SelectedNumb = 3
				selectButton()
			else
				SelectedNumb -= 1
				selectButton()
			end
		elseif keyPressed == Enum.KeyCode.Down or keyPressed == Enum.KeyCode.S or keyPressed == Enum.KeyCode.Tab then
			if SelectedNumb == 3 then
				SelectedNumb = 1	
				selectButton()
			else
				SelectedNumb += 1
				selectButton()
			end
		elseif keyPressed == Enum.KeyCode.Return then
			if SelectedNumb == 1 then
				start()
			elseif SelectedNumb == 2 then
				options()
			elseif SelectedNumb == 3 then
				shop()
			end
		end

	end
end)

I feel like it can be easily shortened and simplified, I just can’t quite get my head around it.

1 Like
local Table = {
    start,
    options,
    shop
}

function ChangeNumb(Table)
    SelectNumb = SelectNumb == Table[1] and Table[2] or SelectNumb + Table[3]

    selectButton()
end

UIS.InputBegan:Connect(function(input, gpe)	
    if not Listening.Value then
        return
    end

    if input.UserInputType == Enum.UserInputType.Keyboard then
        local keyPressed = input.KeyCode

        if keyPressed == Enum.KeyCode.Up or keyPressed == Enum.KeyCode.W then
            ChangeNumb({1, 3, -1})
        elseif keyPressed == Enum.KeyCode.Down or keyPressed == Enum.KeyCode.S or keyPressed == Enum.KeyCode.Tab then
            ChangeNumb({3, 1, 1})
        elseif keyPressed == Enum.KeyCode.Return then
            Table[SelectedNumb]()
        end
    end
end)

try to see if this works, took me forever to type because stuff irl

1 Like