2025-02-26 17:36:12 -07:00

165 lines
3.2 KiB
C#

// 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));
}