Separate sections within surface.DrawPoly

I’ve created a circle using surface.DrawPoly and I’m wanting to use this circle as a menu. I want the circle to be split into different sections and have those sections to be clickable and run a different function for each section though this is far beyond my knowledge so i was wondering if anyone would know how i could do this?

This is my script to create the circle:



function draw.Circle( x, y, radius, seg )
	local cir = {}

	table.insert( cir, { x = x, y = y, u = 0.5, v = 0.5 } )
	for i = 0, seg do
		local a = math.rad( ( i / seg ) * -360 )
		table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )
	end

	local a = math.rad( 0 ) -- This is need for non absolute segment counts
	table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )

	surface.DrawPoly( cir )
end

function CreateMenu(active)
	if active == true then
		surface.SetDrawColor(61, 61, 61, 255)
		draw.NoTexture()
		draw.Circle( ScrW() / 2, ScrH() / 2, 380, 20)
		--Menu = surface.DrawCircle(ScrW() / 2, ScrH() / 2, 500, Color(61, 61, 61, 255))
	end
end
hook.Add("HUDPaint", "MenuButton", function()
	if input.IsKeyDown(KEY_O) then
		CreateMenu(true)
		gui.EnableScreenClicker(true)
	else
		CreateMenu(false)
		gui.EnableScreenClicker(false)
	end
end)