Added gui functionality for vehicle re-mapping

This commit is contained in:
aaravamudan2014 2017-04-17 16:11:10 -04:00 committed by GitHub
parent 92b169337e
commit dfd5812e07

View file

@ -23,6 +23,9 @@
/// Returns true if the current quality settings equal /// Returns true if the current quality settings equal
/// this graphics quality level. /// this graphics quality level.
// boolean flag for vehicle control remappings
$vehicleMapped = false;
function GraphicsQualityLevel::isCurrent( %this ) function GraphicsQualityLevel::isCurrent( %this )
{ {
// Test each pref to see if the current value // Test each pref to see if the current value
@ -231,6 +234,8 @@ function OptionsDlg::onSleep(%this)
{ {
// write out the control config into the rw/config.cs file // write out the control config into the rw/config.cs file
moveMap.save( "scripts/client/config.cs" ); moveMap.save( "scripts/client/config.cs" );
// saving vehicle mappings into separate config file
vehicleMap.save("scripts/client/config_vehicle.cs");
} }
function OptGraphicsDriverMenu::onSelect( %this, %id, %text ) function OptGraphicsDriverMenu::onSelect( %this, %id, %text )
@ -518,18 +523,38 @@ $RemapCount++;
$RemapName[$RemapCount] = "Bring up Options Dialog"; $RemapName[$RemapCount] = "Bring up Options Dialog";
$RemapCmd[$RemapCount] = "bringUpOptions"; $RemapCmd[$RemapCount] = "bringUpOptions";
$RemapCount++; $RemapCount++;
// adding manageable vehicle mappingsnto options gui screen
$RemapName[$RemapCount] = "Vehicle Move Forward";
$RemapCmd[$RemapCount] = "moveforward";
$RemapCount++;
$RemapName[$RemapCount] = "Vehicle Move Backward";
$RemapCmd[$RemapCount] = "moveBackward";
$RemapCount++;
$RemapName[$RemapCount] = "Vehicle brake";
$RemapCmd[$RemapCount] = "brake";
$RemapCount++;
$RemapName[$RemapCount] = "Vehicle free look";
$RemapCmd[$RemapCount] = "toggleFreeLook";
$RemapCount++;
$RemapName[$RemapCount] = "Vehicle mouseFire";
$RemapCmd[$RemapCount] = "mouseFire";
$RemapCount++;
$RemapName[$RemapCount] = "Vehicle alt trigger";
$RemapCmd[$RemapCount] = "altTrigger";
$RemapCount++;
function restoreDefaultMappings() function restoreDefaultMappings()
{ {
moveMap.delete(); moveMap.delete();
vehicleMap.delete();
exec( "scripts/client/default.bind.cs" ); exec( "scripts/client/default.bind.cs" );
optionsDlg.fillRemapList(); optionsDlg.fillRemapList();
} }
function getMapDisplayName( %device, %action ) function getMapDisplayName( %device, %action )
{ {
if ( %device $= "keyboard" ) if ( %device $= "keyboard" )
return( %action ); return( %action );
else if ( strstr( %device, "mouse" ) != -1 ) else if ( strstr( %device, "mouse" ) != -1 )
{ {
@ -582,15 +607,21 @@ function getMapDisplayName( %device, %action )
error( "Unsupported Joystick input object passed to getDisplayMapName!" ); error( "Unsupported Joystick input object passed to getDisplayMapName!" );
} }
} }
return( "??" ); return( "??" );
} }
function buildFullMapString( %index ) function buildFullMapString( %index )
{ {
%name = $RemapName[%index]; %name = $RemapName[%index];
%cmd = $RemapCmd[%index]; %cmd = $RemapCmd[%index];
// getting exact type of binding based on Remap name
if(getSubStr(%name,0,7) $= "Vehicle" )
{
%temp = vehicleMap.getBinding( %cmd );
}
else
%temp = moveMap.getBinding( %cmd ); %temp = moveMap.getBinding( %cmd );
if ( %temp $= "" ) if ( %temp $= "" )
return %name TAB ""; return %name TAB "";
@ -607,12 +638,12 @@ function buildFullMapString( %index )
%object = getField( %temp, %i + 1 ); %object = getField( %temp, %i + 1 );
%mapString = %mapString @ getMapDisplayName( %device, %object ); %mapString = %mapString @ getMapDisplayName( %device, %object );
} }
return %name TAB %mapString; return %name TAB %mapString;
} }
function OptionsDlg::fillRemapList( %this ) function OptionsDlg::fillRemapList( %this )
{ {
%remapList = %this-->OptRemapList; %remapList = %this-->OptRemapList;
%remapList.clear(); %remapList.clear();
@ -621,22 +652,30 @@ function OptionsDlg::fillRemapList( %this )
} }
function OptionsDlg::doRemap( %this ) function OptionsDlg::doRemap( %this )
{ { %remapList = %this-->OptRemapList;
%remapList = %this-->OptRemapList;
%selId = %remapList.getSelectedId(); %selId = %remapList.getSelectedId();
%name = $RemapName[%selId]; %name = $RemapName[%selId];
//turning on the vehicle mapping flag if selected item is vehicle remapping
RemapDlg-->OptRemapText.setValue( "Re-bind \"" @ %name @ "\" to..." ); if(getSubStr(%name,0,7) $= "Vehicle")
{$vehicleMapped = true;
}
RemapDlg-->OptRemapText.setValue( "Re-bind \"" @ %name @ "\" to..." );
OptRemapInputCtrl.index = %selId; OptRemapInputCtrl.index = %selId;
Canvas.pushDialog( RemapDlg ); Canvas.pushDialog( RemapDlg );
} }
function redoMapping( %device, %action, %cmd, %oldIndex, %newIndex ) function redoMapping( %device, %action, %cmd, %oldIndex, %newIndex )
{ {
//%actionMap.bind( %device, %action, $RemapCmd[%newIndex] ); //%actionMap.bind( %device, %action, $RemapCmd[%newIndex] );
moveMap.bind( %device, %action, %cmd ); //performing desired remapping based on flag
if(!$vehicleMapped)
moveMap.bind( %device, %action, %cmd );
else
vehicleMap.bind( %device, %action, %cmd );
%remapList = %this-->OptRemapList; %remapList = %this-->OptRemapList;
%remapList.setRowById( %oldIndex, buildFullMapString( %oldIndex ) ); %remapList.setRowById( %oldIndex, buildFullMapString( %oldIndex ) );
%remapList.setRowById( %newIndex, buildFullMapString( %newIndex ) ); %remapList.setRowById( %newIndex, buildFullMapString( %newIndex ) );
@ -656,7 +695,13 @@ function findRemapCmdIndex( %command )
/// particular moveMap %commmand. /// particular moveMap %commmand.
function unbindExtraActions( %command, %count ) function unbindExtraActions( %command, %count )
{ {
%temp = moveMap.getBinding( %command ); //get current key binding (checking for vehicle mapping)
if(!$vehicleMapped)
%temp = moveMap.getBinding( %command );
else
%temp = vehicleMap.getBinding( %command );
if ( %temp $= "" ) if ( %temp $= "" )
return; return;
@ -665,15 +710,18 @@ function unbindExtraActions( %command, %count )
{ {
%device = getField( %temp, %i + 0 ); %device = getField( %temp, %i + 0 );
%action = getField( %temp, %i + 1 ); %action = getField( %temp, %i + 1 );
//performing desired unbinding of mapped key
if(!$vehicleMapped)
moveMap.unbind( %device, %action ); moveMap.unbind( %device, %action );
} else
vehicleMap.unbind( %device, %action );
}
} }
function OptRemapInputCtrl::onInputEvent( %this, %device, %action ) function OptRemapInputCtrl::onInputEvent( %this, %device, %action )
{ {
//error( "** onInputEvent called - device = " @ %device @ ", action = " @ %action @ " **" ); Canvas.popDialog( RemapDlg );
Canvas.popDialog( RemapDlg );
// Test for the reserved keystrokes: // Test for the reserved keystrokes:
if ( %device $= "keyboard" ) if ( %device $= "keyboard" )
@ -693,15 +741,22 @@ function OptRemapInputCtrl::onInputEvent( %this, %device, %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 = moveMap.getCommand( %device, %action ); if(!$vehicleMapped)
%prevMap = moveMap.getCommand( %device, %action );
else
%prevMap = vehicleMap.getCommand( %device, %action );
// 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 ( %prevMap $= "" ) if ( %prevMap $= "" )
{ {
unbindExtraActions( %cmd, 1 ); unbindExtraActions( %cmd, 1 );
// performing desired binding (vehicleMap or moveMap)
if(!$vehicleMapped)
moveMap.bind( %device, %action, %cmd ); moveMap.bind( %device, %action, %cmd );
else
vehicleMap.bind( %device, %action, %cmd );
optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) ); optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) );
return; return;
} }
@ -712,10 +767,15 @@ function OptRemapInputCtrl::onInputEvent( %this, %device, %action )
if ( %prevMap $= %cmd ) if ( %prevMap $= %cmd )
{ {
unbindExtraActions( %cmd, 0 ); unbindExtraActions( %cmd, 0 );
//performing desired binding (vehicleMap or moveMap)
if(!$vehicleMapped)
moveMap.bind( %device, %action, %cmd ); moveMap.bind( %device, %action, %cmd );
optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) ); else
return; vehicleMap.bind( %device, %action, %cmd );
optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) );
return;
} }
$vehicleMapped = false;
// Look for the index of the previous mapping. // Look for the index of the previous mapping.
%prevMapIndex = findRemapCmdIndex( %prevMap ); %prevMapIndex = findRemapCmdIndex( %prevMap );