mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
Merge pull request #1624 from Sir-Skurpsalot/Skurpz/UI-Module-Fixes
Some checks are pending
Linux Build / ${{matrix.config.name}} (map[build_type:Release cc:gcc cxx:g++ generator:Ninja name:Ubuntu Latest GCC]) (push) Waiting to run
MacOSX Build / ${{matrix.config.name}} (map[build_type:Release cc:clang cxx:clang++ generator:Ninja name:MacOSX Latest Clang]) (push) Waiting to run
Windows Build / ${{matrix.config.name}} (map[build_type:Release cc:cl cxx:cl environment_script:C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat generator:Visual Studio 17 2022 name:Windows Latest MSVC]) (push) Waiting to run
Some checks are pending
Linux Build / ${{matrix.config.name}} (map[build_type:Release cc:gcc cxx:g++ generator:Ninja name:Ubuntu Latest GCC]) (push) Waiting to run
MacOSX Build / ${{matrix.config.name}} (map[build_type:Release cc:clang cxx:clang++ generator:Ninja name:MacOSX Latest Clang]) (push) Waiting to run
Windows Build / ${{matrix.config.name}} (map[build_type:Release cc:cl cxx:cl environment_script:C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat generator:Visual Studio 17 2022 name:Windows Latest MSVC]) (push) Waiting to run
Skurpz/UI module fixes
This commit is contained in:
commit
dd72a627a9
11 changed files with 677 additions and 752 deletions
|
|
@ -13,17 +13,21 @@ function initClient()
|
||||||
exec( "./connectionToServer." @ $TorqueScriptFileExtension );
|
exec( "./connectionToServer." @ $TorqueScriptFileExtension );
|
||||||
exec( "./levelDownload." @ $TorqueScriptFileExtension );
|
exec( "./levelDownload." @ $TorqueScriptFileExtension );
|
||||||
exec( "./levelLoad." @ $TorqueScriptFileExtension );
|
exec( "./levelLoad." @ $TorqueScriptFileExtension );
|
||||||
|
|
||||||
//load prefs
|
|
||||||
exec( "data/defaults." @ $TorqueScriptFileExtension );
|
exec( "data/defaults." @ $TorqueScriptFileExtension );
|
||||||
|
|
||||||
|
moduleExec("initClient");
|
||||||
|
|
||||||
|
//load prefs
|
||||||
%prefPath = getPrefpath();
|
%prefPath = getPrefpath();
|
||||||
if ( isFile( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension ) )
|
if ( isFile( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension ) )
|
||||||
exec( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension );
|
exec( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension );
|
||||||
|
|
||||||
moduleExec("initClient");
|
//keybinds stores user custom keybinds generated by the UI module (if installed), this should be the only place this is executed
|
||||||
|
if(isScriptFile(%prefPath @ "/keybinds." @ $TorqueScriptFileExtension))
|
||||||
|
exec(%prefPath @ "/keybinds." @ $TorqueScriptFileExtension);
|
||||||
|
|
||||||
// Copy saved script prefs into C++ code.
|
// Copy saved script prefs into C++ code.
|
||||||
setDefaultFov( $pref::Player::defaultFov );
|
setDefaultFov( $pref::Player::defaultFov );
|
||||||
setZoomSpeed( $pref::Player::zoomSpeed );
|
setZoomSpeed( $pref::Player::zoomSpeed );
|
||||||
loadModuleMaterials();
|
loadModuleMaterials();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,22 +9,3 @@ function getMouseAdjustAmount(%val)
|
||||||
// based on a default camera FOV of 90'
|
// based on a default camera FOV of 90'
|
||||||
return(%val * ($cameraFov / 90) * 0.01) * $pref::Input::LinkMouseSensitivity;
|
return(%val * ($cameraFov / 90) * 0.01) * $pref::Input::LinkMouseSensitivity;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addKeyRemap(%name, %actionMap, %device, %command, %description)
|
|
||||||
{
|
|
||||||
if(%name $= "" ||
|
|
||||||
%actionMap $= "" ||
|
|
||||||
%device $= "" ||
|
|
||||||
%command $= "")
|
|
||||||
{
|
|
||||||
error("addKeybindRemap() - tried to add a remap entry, but didn't have all the keeded info!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$RemapName[$RemapCount] = %name;
|
|
||||||
$RemapCmd[$RemapCount] = %command;
|
|
||||||
$RemapActionMap[$RemapCount] = %actionMap;
|
|
||||||
$RemapDevice[$RemapCount] = %device;
|
|
||||||
$RemapDescription[$RemapCount] = %description;
|
|
||||||
$RemapCount++;
|
|
||||||
}
|
|
||||||
|
|
@ -29,11 +29,7 @@ function ExampleModule::initClient(%this)
|
||||||
|
|
||||||
//client scripts
|
//client scripts
|
||||||
exec("./scripts/client/defaultkeybinds");
|
exec("./scripts/client/defaultkeybinds");
|
||||||
|
|
||||||
%prefPath = getPrefpath();
|
|
||||||
if(isScriptFile(%prefPath @ "/keybinds"))
|
|
||||||
exec(%prefPath @ "/keybinds");
|
|
||||||
|
|
||||||
%this.queueExec("./scripts/shared/ExampleGameMode");
|
%this.queueExec("./scripts/shared/ExampleGameMode");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,8 @@ function UI::onCreate( %this )
|
||||||
// addLanguage("defaultTable","try","tr");
|
// addLanguage("defaultTable","try","tr");
|
||||||
createLangTable("defaultTable");
|
createLangTable("defaultTable");
|
||||||
setCoreLangTable("defaultTable");
|
setCoreLangTable("defaultTable");
|
||||||
exec("./langs/languageMap");
|
if(isFile("./langs/languageMap"))
|
||||||
|
exec("./langs/languageMap");
|
||||||
}
|
}
|
||||||
|
|
||||||
function UI::onDestroy( %this )
|
function UI::onDestroy( %this )
|
||||||
|
|
@ -99,4 +100,4 @@ function UI::onDestroyClientConnection(%this)
|
||||||
function UI::registerGameMenus(%this, %menusArrayObj)
|
function UI::registerGameMenus(%this, %menusArrayObj)
|
||||||
{
|
{
|
||||||
%menusArrayObj.add("System", SystemMenu);
|
%menusArrayObj.add("System", SystemMenu);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,7 @@ $guiContent = new GuiControl(ChooseLevelMenu) {
|
||||||
horizSizing = "left";
|
horizSizing = "left";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "ChooseLevelBegin(1);";
|
command = "ChooseLevelMenuOption(1);";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiIconButtonCtrl(ChooseLevelBackBtn) {
|
new GuiIconButtonCtrl(ChooseLevelBackBtn) {
|
||||||
|
|
|
||||||
|
|
@ -433,9 +433,9 @@ function ChooseLevelMenuOption(%val)
|
||||||
if(%val)
|
if(%val)
|
||||||
{
|
{
|
||||||
if(ChooseLevelMenu.currentMenuIdx == 0)
|
if(ChooseLevelMenu.currentMenuIdx == 0)
|
||||||
ToggleGameMode(ChooseLevelMenu.listPosition);
|
ToggleGameMode($MenuList.listPosition);
|
||||||
else if(ChooseLevelMenu.currentMenuIdx == 1)
|
else if(ChooseLevelMenu.currentMenuIdx == 1)
|
||||||
ChooseLevelBegin(ChooseLevelMenu.listPosition);
|
ChooseLevelBegin($MenuList.listPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -536,4 +536,4 @@ function LevelPreviewButton::onHighlighted(%this, %highlighted)
|
||||||
|
|
||||||
LevelPreviewScroll.scrollToObject(%this);
|
LevelPreviewScroll.scrollToObject(%this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,125 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(RemapConfirmDlg) {
|
|
||||||
position = "0 0";
|
|
||||||
extent = "1024 768";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
helpTag = "0";
|
|
||||||
|
|
||||||
new GuiContainer(RemapConfirmationPanel) {
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "168 352";
|
|
||||||
extent = "700 64";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiChunkedBitmapCtrl() {
|
|
||||||
bitmapAsset = "UI:hudfill_image";
|
|
||||||
useVariable = "0";
|
|
||||||
tile = "0";
|
|
||||||
position = "0 0";
|
|
||||||
extent = "700 64";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl(RemapConfirmationText) {
|
|
||||||
text = "\"m\" is already bound to \"Forward\"!\nDo you wish to replace this mapping?";
|
|
||||||
maxLength = "255";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "0 8";
|
|
||||||
extent = "700 20";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
accelerator = "return";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(RemapConfirmationYesButton) {
|
|
||||||
text = "Yes";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "270 36";
|
|
||||||
extent = "80 22";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "ControlsMenu.redoMapping(keyboard, \"m\", \"jump\", 0, 4); Canvas.popDialog();";
|
|
||||||
accelerator = "return";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(RemapConfirmationNoButton) {
|
|
||||||
text = "No";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "367 36";
|
|
||||||
extent = "80 22";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "Canvas.popDialog();";
|
|
||||||
accelerator = "escape";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
@ -8,24 +8,27 @@ function OptRemapInputCtrl::onAxisEvent( %this, %device, %action, %axisVal)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Canvas.popDialog( RemapDlg );
|
Canvas.popDialog( RemapDlg );
|
||||||
|
|
||||||
%this.doRemap(%device, %action, %axisVal);
|
%this.doRemap(%device, %action, %axisVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
function OptRemapInputCtrl::onInputEvent( %this, %device, %action )
|
function OptRemapInputCtrl::onInputEvent( %this, %device, %action )
|
||||||
{
|
{
|
||||||
if(!startsWith(%device,$remapListDevice) && %action !$= "escape" && %action !$= "btn_start")
|
if(%action $= "escape" || %action $= "btn_start"){
|
||||||
{
|
Canvas.popDialog( RemapDlg );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
// do nothing if gamepad is attempted to be used on the keyboard & mouse binds menu...
|
||||||
{
|
else if(%device $= "gamepad" && $remapListDevice $= "keyboard")
|
||||||
|
return;
|
||||||
|
// do nothing if keyboard or mouse is attempted to be used on the gamepad binds menu...
|
||||||
|
else if ((%device $= "mouse" || %device $= "keyboard") && $remapListDevice $= "gamePad")
|
||||||
|
return;
|
||||||
|
// procceed with remap if appropriate device used on binds menu...
|
||||||
|
else{
|
||||||
Canvas.popDialog( RemapDlg );
|
Canvas.popDialog( RemapDlg );
|
||||||
|
|
||||||
if(%action $= "escape" || %action $= "btn_start")
|
|
||||||
return;
|
|
||||||
|
|
||||||
%this.doRemap(%device, %action, 0);
|
%this.doRemap(%device, %action, 0);
|
||||||
|
$RemapDirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,39 +37,40 @@ function OptRemapInputCtrl::doRemap(%this, %device, %action, %axisVal)
|
||||||
%cmd = $RemapCmd[%this.index];
|
%cmd = $RemapCmd[%this.index];
|
||||||
%name = $RemapName[%this.index];
|
%name = $RemapName[%this.index];
|
||||||
%actionMap = $RemapActionMap[%this.index];
|
%actionMap = $RemapActionMap[%this.index];
|
||||||
|
|
||||||
echo("OptRemapInputCtrl::onInputEvent() - remapping details: " @ %cmd @ ", " @ %name @ ", " @ %actionMap @ " remapped to: " @ %device @ ", " @ %action);
|
echo("OptRemapInputCtrl::onInputEvent() - remapping details: " @ %cmd @ ", " @ %name @ ", " @ %actionMap @ " remapped to: " @ %device @ ", " @ %action);
|
||||||
|
|
||||||
// Grab the friendly display name for this action
|
// Grab the friendly display name for this action
|
||||||
// which we'll use when prompting the user below.
|
// which we'll use when prompting the user below.
|
||||||
%mapName = getMapDisplayName( %device, %action );
|
%mapName = getMapDisplayName( %device, %action );
|
||||||
|
|
||||||
// Get the current command this action is mapped to.
|
// Get the current command this action is mapped to.
|
||||||
%prevMap = %actionMap.getCommand( %device, %action );
|
%prevMap = %actionMap.getCommand( %device, %action );
|
||||||
|
|
||||||
//TODO: clear all existant keybinds to a command and then bind it so we only have a single one at all times
|
// Make sure no other "action" (key / button press) is bound to this command
|
||||||
unbindExtraActions( %cmd, %actionMap, %device, 0 );
|
unbindExtraActions( %cmd, %actionMap, %device, 0 );
|
||||||
unbindExtraActions( %cmd, %actionMap, %device, 1 );
|
unbindExtraActions( %cmd, %actionMap, %device, 1 );
|
||||||
|
|
||||||
// If nothing was mapped to the previous command
|
// If nothing was mapped to the previous command
|
||||||
// mapping then it's easy... just bind it.
|
// mapping then it's easy... just bind it.
|
||||||
// If the previous command is the same as the
|
// If the previous command is the same as the
|
||||||
// current then they hit the same input as what
|
// current then they hit the same input as what
|
||||||
// was already assigned.
|
// was already assigned.
|
||||||
if ( %prevMap $= "" || %prevMap $= %cmd )
|
if ( %prevMap $= "" || %prevMap $= %cmd )
|
||||||
{
|
{
|
||||||
//unbindExtraActions( %cmd, %actionMap, 1 );
|
|
||||||
%actionMap.bind( %device, %action, %cmd );
|
%actionMap.bind( %device, %action, %cmd );
|
||||||
|
|
||||||
OptionsMenu.populateKBMControls();
|
OptionsMenu.populateKBMControls();
|
||||||
OptionsMenu.populateGamepadControls();
|
OptionsMenu.populateGamepadControls();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
|
// If this action (key / button press) was already bound to another command, undoing that is handled in this section
|
||||||
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
// Look for the index of the previous mapping.
|
// Look for the index of the previous mapping.
|
||||||
%prevMapIndex = findRemapCmdIndex( %prevMap );
|
%prevMapIndex = findRemapCmdIndex( %prevMap );
|
||||||
|
|
||||||
// If we get a negative index then the previous
|
// If we get a negative index then the previous
|
||||||
// mapping was to an item that isn't included in
|
// mapping was to an item that isn't included in
|
||||||
// the mapping list... so we cannot unmap it.
|
// the mapping list... so we cannot unmap it.
|
||||||
if ( %prevMapIndex == -1 )
|
if ( %prevMapIndex == -1 )
|
||||||
|
|
@ -77,22 +81,23 @@ function OptRemapInputCtrl::doRemap(%this, %device, %action, %axisVal)
|
||||||
|
|
||||||
// Setup the forced remapping callback command.
|
// Setup the forced remapping callback command.
|
||||||
%callback = "redoMapping(" @ %device @ ", " @ %actionMap @ ", \"" @ %action @ "\", \"" @
|
%callback = "redoMapping(" @ %device @ ", " @ %actionMap @ ", \"" @ %action @ "\", \"" @
|
||||||
%cmd @ "\", " @ %prevMapIndex @ ", " @ %this.index @ ");";
|
%cmd @ "\");";
|
||||||
|
|
||||||
// Warn that we're about to remove the old mapping and
|
// Warn that we're about to remove the old mapping and
|
||||||
// replace it with another.
|
// replace it with another.
|
||||||
%prevCmdName = $RemapName[%prevMapIndex];
|
%prevCmdName = $RemapName[%prevMapIndex];
|
||||||
//Canvas.pushDialog( RemapConfirmDlg );
|
|
||||||
|
|
||||||
%remapWarnText = "\"" @ %mapName @ "\" is already bound to \"" @ %prevCmdName @ "\"! Do you wish to replace this mapping?";
|
%remapWarnText = "\"" @ %mapName @ "\" is already bound to \"" @ %prevCmdName @ "\"! Do you wish to replace this mapping?";
|
||||||
|
|
||||||
%doRemapCommand = "redoMapping(" @ %device @ ", " @ %actionMap @ ", \"" @ %action @ "\", \"" @
|
%doRemapCommand = "redoMapping(" @ %device @ ", " @ %actionMap @ ", \"" @ %action @ "\", \"" @
|
||||||
%cmd @ "\", " @ %prevMapIndex @ ", " @ %this.index @ ");";
|
%cmd @ "\");";
|
||||||
|
|
||||||
%cancelCommand = "";
|
%cancelCommand = "";
|
||||||
|
|
||||||
MessageBoxYesNo( "Key already in use", %remapWarnText, %doRemapCommand, %cancelCommand );
|
MessageBoxYesNo( "Key already in use", %remapWarnText, %doRemapCommand, %cancelCommand );
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This unbinds actions beyond %count associated to the
|
/// This unbinds actions (buttons / key presses) beyond %count associated to the
|
||||||
/// particular actionMap %commmand.
|
/// particular actionMap %commmand.
|
||||||
function unbindExtraActions( %command, %actionMap, %device, %count )
|
function unbindExtraActions( %command, %actionMap, %device, %count )
|
||||||
{
|
{
|
||||||
|
|
@ -105,8 +110,25 @@ function unbindExtraActions( %command, %actionMap, %device, %count )
|
||||||
{
|
{
|
||||||
%amDevice = getField( %temp, %i + 0 );
|
%amDevice = getField( %temp, %i + 0 );
|
||||||
%action = getField( %temp, %i + 1 );
|
%action = getField( %temp, %i + 1 );
|
||||||
|
|
||||||
if(%device !$= "" || %device $= %amDevice)
|
if(amDevice !$= "") {
|
||||||
%actionMap.unbind( %device, %action );
|
%actionMap.unbind( %amDevice, %action ); //need to use %amDevice because could be changing from keyboard to mouse or vice versa
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function findRemapCmdIndex( %command ){
|
||||||
|
for ( %i = 0; %i < $RemapCount; %i++ )
|
||||||
|
{
|
||||||
|
if ( %command $= $RemapCmd[%i] )
|
||||||
|
return( %i );
|
||||||
|
}
|
||||||
|
return( -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
function redoMapping( %device, %actionMap, %action, %cmd)
|
||||||
|
{
|
||||||
|
%actionMap.bind( %device, %action, %cmd );
|
||||||
|
OptionsMenu.populateKBMControls();
|
||||||
|
OptionsMenu.populateGamepadControls();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,157 +0,0 @@
|
||||||
// =============================================================================
|
|
||||||
// KEYBINDS MENU
|
|
||||||
// =============================================================================
|
|
||||||
function ControlsMenuDefaultsButton::onClick(%this)
|
|
||||||
{
|
|
||||||
//For this to work with module-style, we have to figure that somewhere, we'll set where our default keybind script is at.
|
|
||||||
//This can be hardcoded in your actual project.
|
|
||||||
//exec($KeybindPath);
|
|
||||||
//ControlsMenu.reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMapDisplayName( %device, %action )
|
|
||||||
{
|
|
||||||
if ( %device $= "keyboard" )
|
|
||||||
return( %action );
|
|
||||||
else if ( strstr( %device, "mouse" ) != -1 )
|
|
||||||
{
|
|
||||||
// Substitute "mouse" for "button" in the action string:
|
|
||||||
%pos = strstr( %action, "button" );
|
|
||||||
if ( %pos != -1 )
|
|
||||||
{
|
|
||||||
%mods = getSubStr( %action, 0, %pos );
|
|
||||||
%object = getSubStr( %action, %pos, 1000 );
|
|
||||||
%instance = getSubStr( %object, strlen( "button" ), 1000 );
|
|
||||||
return( %mods @ "mouse" @ ( %instance + 1 ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
error( "Mouse input object other than button passed to getDisplayMapName!" );
|
|
||||||
}
|
|
||||||
else if ( strstr( %device, "joystick" ) != -1 )
|
|
||||||
{
|
|
||||||
// Substitute "joystick" for "button" in the action string:
|
|
||||||
%pos = strstr( %action, "button" );
|
|
||||||
if ( %pos != -1 )
|
|
||||||
{
|
|
||||||
%mods = getSubStr( %action, 0, %pos );
|
|
||||||
%object = getSubStr( %action, %pos, 1000 );
|
|
||||||
%instance = getSubStr( %object, strlen( "button" ), 1000 );
|
|
||||||
return( %mods @ "joystick" @ ( %instance + 1 ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%pos = strstr( %action, "pov" );
|
|
||||||
if ( %pos != -1 )
|
|
||||||
{
|
|
||||||
%wordCount = getWordCount( %action );
|
|
||||||
%mods = %wordCount > 1 ? getWords( %action, 0, %wordCount - 2 ) @ " " : "";
|
|
||||||
%object = getWord( %action, %wordCount - 1 );
|
|
||||||
switch$ ( %object )
|
|
||||||
{
|
|
||||||
case "upov": %object = "POV1 up";
|
|
||||||
case "dpov": %object = "POV1 down";
|
|
||||||
case "lpov": %object = "POV1 left";
|
|
||||||
case "rpov": %object = "POV1 right";
|
|
||||||
case "upov2": %object = "POV2 up";
|
|
||||||
case "dpov2": %object = "POV2 down";
|
|
||||||
case "lpov2": %object = "POV2 left";
|
|
||||||
case "rpov2": %object = "POV2 right";
|
|
||||||
default: %object = "";
|
|
||||||
}
|
|
||||||
return( %mods @ %object );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
error( "Unsupported Joystick input object passed to getDisplayMapName!" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( strstr( %device, "gamepad" ) != -1 )
|
|
||||||
{
|
|
||||||
return %action;
|
|
||||||
|
|
||||||
%pos = strstr( %action, "button" );
|
|
||||||
if ( %pos != -1 )
|
|
||||||
{
|
|
||||||
%mods = getSubStr( %action, 0, %pos );
|
|
||||||
%object = getSubStr( %action, %pos, 1000 );
|
|
||||||
%instance = getSubStr( %object, strlen( "button" ), 1000 );
|
|
||||||
return( %mods @ "joystick" @ ( %instance + 1 ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%pos = strstr( %action, "thumb" );
|
|
||||||
if ( %pos != -1 )
|
|
||||||
{
|
|
||||||
//%instance = getSubStr( %action, strlen( "thumb" ), 1000 );
|
|
||||||
//return( "thumb" @ ( %instance + 1 ) );
|
|
||||||
return %action;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
error( "Unsupported gamepad input object passed to getDisplayMapName!" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return( "" );
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildFullMapString( %index, %actionMap, %deviceType )
|
|
||||||
{
|
|
||||||
%name = $RemapName[%index];
|
|
||||||
%cmd = $RemapCmd[%index];
|
|
||||||
|
|
||||||
%temp = %actionMap.getBinding( %cmd );
|
|
||||||
if ( %temp $= "" )
|
|
||||||
return %name TAB "";
|
|
||||||
|
|
||||||
%mapString = "";
|
|
||||||
|
|
||||||
%count = getFieldCount( %temp );
|
|
||||||
for ( %i = 0; %i < %count; %i += 2 )
|
|
||||||
{
|
|
||||||
if ( %mapString !$= "" )
|
|
||||||
continue;
|
|
||||||
//%mapString = %mapString @ ", ";
|
|
||||||
|
|
||||||
%device = getField( %temp, %i + 0 );
|
|
||||||
%object = getField( %temp, %i + 1 );
|
|
||||||
|
|
||||||
if (startsWith(%device,"mouse"))
|
|
||||||
%deviceType = "mouse";
|
|
||||||
|
|
||||||
if(%deviceType !$= "" && !startsWith(%device, %deviceType))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
%mapString = %mapString @ getMapDisplayName( %device, %object );
|
|
||||||
}
|
|
||||||
|
|
||||||
return %name TAB %mapString;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ControlsMenuRebindButton::onClick(%this)
|
|
||||||
{
|
|
||||||
%name = $RemapName[%this.keybindIndex];
|
|
||||||
RemapDlg-->OptRemapText.text = "Re-bind \"" @ %name @ "\" to..." ;
|
|
||||||
|
|
||||||
OptRemapInputCtrl.index = %this.keybindIndex;
|
|
||||||
OptRemapInputCtrl.optionIndex = %this.optionIndex;
|
|
||||||
Canvas.pushDialog( RemapDlg );
|
|
||||||
}
|
|
||||||
|
|
||||||
function findRemapCmdIndex( %command )
|
|
||||||
{
|
|
||||||
for ( %i = 0; %i < $RemapCount; %i++ )
|
|
||||||
{
|
|
||||||
if ( %command $= $RemapCmd[%i] )
|
|
||||||
return( %i );
|
|
||||||
}
|
|
||||||
return( -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function redoMapping( %device, %actionMap, %action, %cmd, %oldIndex, %newIndex )
|
|
||||||
{
|
|
||||||
//%actionMap.bind( %device, %action, $RemapCmd[%newIndex] );
|
|
||||||
%actionMap.bind( %device, %action, %cmd );
|
|
||||||
|
|
||||||
OptionsMenu.populateKBMControls();
|
|
||||||
OptionsMenu.populateGamepadControls();
|
|
||||||
}
|
|
||||||
|
|
@ -182,11 +182,11 @@ function addLanguage(%langTable, %filename, %alias)
|
||||||
{
|
{
|
||||||
// generate an .lso file and if a languageMap file does not exist, it as well
|
// generate an .lso file and if a languageMap file does not exist, it as well
|
||||||
%needLangMap = true;
|
%needLangMap = true;
|
||||||
if(isFile("data/UI/langs/languageMap"))
|
if(isFile("./langs/languageMap"))
|
||||||
%needLangMap = false;
|
%needLangMap = false;
|
||||||
|
|
||||||
CompileLanguage("data/UI/langs/"@ %filename @".txt", %needLangMap);
|
CompileLanguage("./langs/"@ %filename @".txt", %needLangMap);
|
||||||
%langTable.addLanguage("data/UI/langs/"@ %filename @".lso", %alias);
|
%langTable.addLanguage("./langs/"@ %filename @".lso", %alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
function switchLanguage(%language) //use here the #n as it's the order of inclusion
|
function switchLanguage(%language) //use here the #n as it's the order of inclusion
|
||||||
|
|
@ -195,3 +195,26 @@ function switchLanguage(%language) //use here the #n as it's the order of inclus
|
||||||
getCoreLangTable().setCurrentLanguage(%language);
|
getCoreLangTable().setCurrentLanguage(%language);
|
||||||
Canvas.setContent(Canvas.getContent());
|
Canvas.setContent(Canvas.getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addKeyRemap(%name, %actionMap, %device, %command, %description)
|
||||||
|
{
|
||||||
|
if(%name $= "" ||
|
||||||
|
%actionMap $= "" ||
|
||||||
|
%device $= "" ||
|
||||||
|
%command $= "")
|
||||||
|
{
|
||||||
|
error("addKeybindRemap() - tried to add a remap entry, but didn't have all the keeded info!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// "mouse" is accepted as a convenience, but the remappable actions related functions treat it same as "keyboard".
|
||||||
|
if(%device $= "mouse")
|
||||||
|
%device = "keyboard";
|
||||||
|
|
||||||
|
$RemapName[$RemapCount] = %name;
|
||||||
|
$RemapCmd[$RemapCount] = %command;
|
||||||
|
$RemapActionMap[$RemapCount] = %actionMap;
|
||||||
|
$RemapDevice[$RemapCount] = %device;
|
||||||
|
$RemapDescription[$RemapCount] = %description;
|
||||||
|
$RemapCount++;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue