
local drag_modes = {
	["x / z"] = { "x", "z" },
	["y"] = { "y" },
	["pitch / yaw"] = { "pitch", "yaw" },
	["roll"] = { "roll" }
}

local function GetIronSightPrintText( vec, ang )
	return "SWEP.IronSightsPos = "..PrintVec( vec ).."\nSWEP.IronSightsAng = "..PrintVec( ang )
end

local wep = GetSCKSWEP( LocalPlayer() )
local pironsight = wep.pironsight
local pironsight_enable = SimplePanel( pironsight )

	local icbox = vgui.Create( "DCheckBoxLabel", pironsight_enable )
		icbox:SetSize( 150, 20 )
		icbox:SetText( "Enable ironsights" )
		icbox.OnChange = function()
			if (wep:GetIronSights() != icbox:GetChecked()) then
				RunConsoleCommand("swepck_toggleironsights")
			end
		end
		if (wep.save_data.IronSightsEnabled) then icbox:SetValue(1)
		else icbox:SetValue(0) end
	icbox:Dock(LEFT)

	local ribtn = vgui.Create( "DButton", pironsight_enable )
		ribtn:SetTall( 20 )
		ribtn:SetText( "Reset ironsights" )
		ribtn.DoClick = function()
			wep:ResetIronSights()
		end
	ribtn:Dock(FILL)

pironsight_enable:DockMargin(0,0,0,5)
pironsight_enable:Dock(TOP)

local pironsight_drag = SimplePanel( pironsight )

	local modlabel = vgui.Create( "DLabel", pironsight_drag )
		modlabel:SetSize( 150, 20 )
		modlabel:SetText( "Drag mode:" )
	modlabel:Dock(LEFT)

	local drbox = vgui.Create( "DComboBox", pironsight_drag )
		drbox:SetTall( 20 )
		drbox:SetText( wep.cur_drag_mode )
		for k, v in pairs( drag_modes ) do
			drbox:AddChoice( k )
		end
		drbox.OnSelect = function(panel,index,value)
			local modes = drag_modes[value]
			wep.cur_drag_mode = value
			for k, v in pairs( wep.ir_drag ) do
				v[1] = table.HasValue( modes, k ) -- set the drag modus
			end
		end
	drbox:Dock(FILL)

pironsight_drag:DockMargin(0,0,0,10)
pironsight_drag:Dock(TOP)

local ixslider = vgui.Create( "DNumSlider", pironsight )
	ixslider:SetText( "Translate x" )
	ixslider:SetMinMax( -20, 20 )
	ixslider:SetDecimals( 3 )
	ixslider:SetConVar( "_sp_ironsight_x" )
	ixslider:SetValue( wep.save_data.IronSightsPos.x )
	ixslider.ConVarChanged = function( p, value )
		RunConsoleCommand("_sp_ironsight_x",value)
	end
ixslider:DockMargin(0,0,0,10)
ixslider:Dock(TOP)

local iyslider = vgui.Create( "DNumSlider", pironsight )
	iyslider:SetText( "Translate y" )
	iyslider:SetMinMax( -20, 20 )
	iyslider:SetDecimals( 3 )
	iyslider:SetConVar( "_sp_ironsight_y" )
	iyslider:SetValue( wep.save_data.IronSightsPos.y )
	iyslider.ConVarChanged = function( p, value )
		RunConsoleCommand("_sp_ironsight_y",value)
	end
iyslider:DockMargin(0,0,0,10)
iyslider:Dock(TOP)

local izslider = vgui.Create( "DNumSlider", pironsight )
	izslider:SetText( "Translate z" )
	izslider:SetMinMax( -20, 20 )
	izslider:SetDecimals( 3 )
	izslider:SetConVar( "_sp_ironsight_z" )
	izslider:SetValue( wep.save_data.IronSightsPos.z )
	izslider.ConVarChanged = function( p, value )
		RunConsoleCommand("_sp_ironsight_z",value)
	end
izslider:DockMargin(0,0,0,10)
izslider:Dock(TOP)

local ipslider = vgui.Create( "DNumSlider", pironsight )
	ipslider:SetText( "Rotate pitch" )
	ipslider:SetMinMax( -70, 70 )
	ipslider:SetDecimals( 3 )
	ipslider:SetConVar( "_sp_ironsight_pitch" )
	ipslider:SetValue( wep.save_data.IronSightsAng.x )
	ipslider.ConVarChanged = function( p, value )
		RunConsoleCommand("_sp_ironsight_pitch",value)
	end
ipslider:DockMargin(0,0,0,10)
ipslider:Dock(TOP)

local iyaslider = vgui.Create( "DNumSlider", pironsight )
	iyaslider:SetText( "Rotate yaw" )
	iyaslider:SetMinMax( -70, 70 )
	iyaslider:SetDecimals( 3 )
	iyaslider:SetConVar( "_sp_ironsight_yaw" )
	iyaslider:SetValue( wep.save_data.IronSightsAng.y )
	iyaslider.ConVarChanged = function( p, value )
		RunConsoleCommand("_sp_ironsight_yaw",value)
	end
iyaslider:DockMargin(0,0,0,10)
iyaslider:Dock(TOP)

local irslider = vgui.Create( "DNumSlider", pironsight )
	irslider:SetText( "Rotate roll" )
	irslider:SetMinMax( -70, 70 )
	irslider:SetDecimals( 3 )
	irslider:SetConVar( "_sp_ironsight_roll" )
	irslider:SetValue( wep.save_data.IronSightsAng.z )
	irslider.ConVarChanged = function( p, value )
		RunConsoleCommand("_sp_ironsight_roll",value)
	end
irslider:DockMargin(0,0,0,10)
irslider:Dock(TOP)

local pcbtn = vgui.Create( "DButton", pironsight )
	pcbtn:SetTall( 30 )
	pcbtn:SetText( "Copy ironsights code to clipboard" )
	pcbtn.DoClick = function()
		local vec, ang = wep:GetIronSightCoordination()
		SetClipboardText(GetIronSightPrintText( vec, ang ))
		LocalPlayer():ChatPrint("Code copied to clipboard!")
	end
pcbtn:DockMargin(0,5,0,0)
pcbtn:Dock(BOTTOM)

local prbtn = vgui.Create( "DButton", pironsight )
	prbtn:SetTall( 30 )
	prbtn:SetText( "Print ironsights code to console" )
	prbtn.DoClick = function()
		local vec, ang = wep:GetIronSightCoordination()
		MsgN("*********************************************")
		MsgN(GetIronSightPrintText( vec, ang ))
		MsgN("*********************************************")
		LocalPlayer():ChatPrint("Code printed to console!")
	end
prbtn:DockMargin(0,5,0,0)
prbtn:Dock(BOTTOM)
