// Prepares the fillWrench gui and handles submitting the settings.
// -------------------------------------------------------------------

package NewDuplicator_Client
{
	function clientCmdWrench_LoadMenus()
	{
		parent::clientCmdWrench_LoadMenus();

		$ND::WrenchReloadRequired = true;
	}
};

//Open the wrench gui for fill wrench mode
function clientCmdNdOpenWrenchGui()
{
	if($ND::WrenchReloadRequired)
	{
		//Reload the drop down lists
		ND_Wrench_Lights.clear();
		ND_Wrench_Emitters.clear();
		ND_Wrench_Items.clear();

		ND_Wrench_Lights.add(" NONE", 0);
		ND_Wrench_Emitters.add(" NONE", 0);
		ND_Wrench_Items.add(" NONE", 0);

		//Add all datablocks to list
		%cnt = getDatablockGroupSize();

		for(%i = 0; %i < %cnt; %i++)
		{
			%data = getDatablock(%i);
			%uiName = %data.uiName;

			//Skip non-selectable datablocks
			if(%uiName $= "")
				continue;

			//Put datablock in correct list
			switch$(%data.getClassName())
			{
				case "FxLightData":
					ND_Wrench_Lights.add(%uiName, %data);

				case "ParticleEmitterData":
					ND_Wrench_Emitters.add(%uiName, %data);

				case "ItemData":
					ND_Wrench_Items.add(%uiName, %data);
			}
		}

		//Sort lists
		ND_Wrench_Lights.sort();
		ND_Wrench_Emitters.sort();
		ND_Wrench_Items.sort();

		//Select NONE
		ND_Wrench_Lights.setSelected(0);
		ND_Wrench_Emitters.setSelected(0);
		ND_Wrench_Items.setSelected(0);

		$ND::WrenchReloadRequired = false;
	}

	//Open gui
	Canvas.pushDialog(ND_WrenchDlg);
}

//Send the settings to the server
function ndSendFillWrenchData()
{
	//Close gui
	Canvas.popDialog(ND_WrenchDlg);

	//Pack all enabled settings in string
	%str = "";

	if(ND_Wrench_ToggleName.getValue())
		%str = %str TAB "N" SPC trim(ND_Wrench_Name.getValue());

	if(ND_Wrench_ToggleLights.getValue())
		%str = %str TAB "LDB" SPC ND_Wrench_Lights.getSelected();

	if(ND_Wrench_ToggleEmitters.getValue())
		%str = %str TAB "EDB" SPC ND_Wrench_Emitters.getSelected();

	if(ND_Wrench_ToggleEmitterDir.getValue())
	{
		%dir = -1;

		for(%i = 0; %i < 6; %i++)
		{
			%obj = "ND_Wrench_EmitterDir" @ %i;

			if(%obj.getValue())
			{
				%dir = %i;
				break;
			}
		}

		if(%dir >= 0)
			%str = %str TAB "EDIR" SPC %dir;
	}

	if(ND_Wrench_ToggleItems.getValue())
		%str = %str TAB "IDB" SPC ND_Wrench_Items.getSelected();

	if(ND_Wrench_ToggleItemPos.getValue())
	{
		%pos = -1;

		for(%i = 0; %i < 6; %i++)
		{
			%obj = "ND_Wrench_ItemPos" @ %i;

			if(%obj.getValue())
			{
				%pos = %i;
				break;
			}
		}

		if(%pos >= 0)
			%str = %str TAB "IPOS" SPC %pos;
	}

	if(ND_Wrench_ToggleItemDir.getValue())
	{
		%dir = -1;

		for(%i = 2; %i < 6; %i++)
		{
			%obj = "ND_Wrench_ItemDir" @ %i;

			if(%obj.getValue())
			{
				%dir = %i;
				break;
			}
		}

		if(%dir >= 2)
			%str = %str TAB "IDIR" SPC %dir;
	}

	if(ND_Wrench_ToggleItemTime.getValue())
		%str = %str TAB "IRT" SPC trim(ND_Wrench_ItemTime.getValue()) * 1;

	if(ND_Wrench_ToggleRayCasting.getValue())
		%str = %str TAB "RC" SPC ND_Wrench_RayCasting.getValue();

	if(ND_Wrench_ToggleCollision.getValue())
		%str = %str TAB "C" SPC ND_Wrench_Collision.getValue();

	if(ND_Wrench_ToggleRendering.getValue())
		%str = %str TAB "R" SPC ND_Wrench_Rendering.getValue();

	//Send string
	if(strLen(%str))
		commandToServer('ndStartFillWrench', trim(%str));
}