Ver Fonte

Added gui functionality for vehicle re-mapping

aaravamudan2014 há 8 anos atrás
pai
commit
dfd5812e07
1 ficheiros alterados com 82 adições e 22 exclusões
  1. 82 22
      Templates/Full/game/scripts/gui/optionsDlg.cs

+ 82 - 22
Templates/Full/game/scripts/gui/optionsDlg.cs

@@ -23,6 +23,9 @@
 
 /// Returns true if the current quality settings equal
 /// this graphics quality level.
+
+// boolean flag for vehicle control remappings
+$vehicleMapped = false;
 function GraphicsQualityLevel::isCurrent( %this )
 {
    // 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
    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 )
@@ -518,18 +523,38 @@ $RemapCount++;
 $RemapName[$RemapCount] = "Bring up Options Dialog";
 $RemapCmd[$RemapCount] = "bringUpOptions";
 $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()
 {
    moveMap.delete();
+   vehicleMap.delete();  
    exec( "scripts/client/default.bind.cs" );
    optionsDlg.fillRemapList();
 }
 
 function getMapDisplayName( %device, %action )
 {
-	if ( %device $= "keyboard" )
+       if ( %device $= "keyboard" )
 		return( %action );		
 	else if ( strstr( %device, "mouse" ) != -1 )
 	{
@@ -582,15 +607,21 @@ function getMapDisplayName( %device, %action )
             error( "Unsupported Joystick input object passed to getDisplayMapName!" );
       }
 	}
-		
-	return( "??" );		
+	
+       return( "??" );		
 }
 
 function buildFullMapString( %index )
 {
    %name       = $RemapName[%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 );
    if ( %temp $= "" )
       return %name TAB "";
@@ -607,12 +638,12 @@ function buildFullMapString( %index )
       %object = getField( %temp, %i + 1 );
       %mapString = %mapString @ getMapDisplayName( %device, %object );
    }
-
    return %name TAB %mapString; 
 }
 
 function OptionsDlg::fillRemapList( %this )
 {
+ 
    %remapList = %this-->OptRemapList;
    
 	%remapList.clear();
@@ -621,22 +652,30 @@ function OptionsDlg::fillRemapList( %this )
 }
 
 function OptionsDlg::doRemap( %this )
-{
-   %remapList = %this-->OptRemapList;
+{   %remapList = %this-->OptRemapList;
    
 	%selId = %remapList.getSelectedId();
-   %name = $RemapName[%selId];
-
-	RemapDlg-->OptRemapText.setValue( "Re-bind \"" @ %name @ "\" to..." );
+    %name = $RemapName[%selId];
+    //turning on the vehicle mapping flag if selected item is vehicle remapping
+    if(getSubStr(%name,0,7) $= "Vehicle") 
+    {$vehicleMapped = true;
+    }
+    RemapDlg-->OptRemapText.setValue( "Re-bind \"" @ %name @ "\" to..." );
 	OptRemapInputCtrl.index = %selId;
+    
 	Canvas.pushDialog( RemapDlg );
+   
 }
 
 function redoMapping( %device, %action, %cmd, %oldIndex, %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.setRowById( %oldIndex, buildFullMapString( %oldIndex ) );
 	%remapList.setRowById( %newIndex, buildFullMapString( %newIndex ) );
@@ -656,7 +695,13 @@ function findRemapCmdIndex( %command )
 /// particular moveMap %commmand.
 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 $= "" )
       return;
 
@@ -665,15 +710,18 @@ function unbindExtraActions( %command, %count )
    {
       %device = getField( %temp, %i + 0 );
       %action = getField( %temp, %i + 1 );
-      
+      //performing desired unbinding of mapped key
+      if(!$vehicleMapped)
       moveMap.unbind( %device, %action );
-   }
+      else
+      vehicleMap.unbind( %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:
    if ( %device $= "keyboard" )
@@ -693,15 +741,22 @@ function OptRemapInputCtrl::onInputEvent( %this, %device, %action )
    // which we'll use when prompting the user below.
    %mapName = getMapDisplayName( %device, %action );
    
-   // Get the current command this action is mapped to.
-   %prevMap = moveMap.getCommand( %device, %action );
-
+   // Get the current command this action is mapped to
+   if(!$vehicleMapped)
+    %prevMap = moveMap.getCommand( %device, %action );
+    else
+    %prevMap = vehicleMap.getCommand( %device, %action );
+    
    // If nothing was mapped to the previous command 
    // mapping then it's easy... just bind it.
    if ( %prevMap $= "" )
    {
       unbindExtraActions( %cmd, 1 );
+      // performing desired binding (vehicleMap or moveMap)
+      if(!$vehicleMapped)
       moveMap.bind( %device, %action, %cmd );
+      else
+      vehicleMap.bind( %device, %action, %cmd );
       optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) );
       return;
    }
@@ -712,10 +767,15 @@ function OptRemapInputCtrl::onInputEvent( %this, %device, %action )
    if ( %prevMap $= %cmd )
    {
       unbindExtraActions( %cmd, 0 );
+     //performing desired binding (vehicleMap or moveMap)
+     if(!$vehicleMapped)
       moveMap.bind( %device, %action, %cmd );
-      optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) );
-      return;   
+     else
+      vehicleMap.bind( %device, %action, %cmd );
+     optionsDlg-->OptRemapList.setRowById( %this.index, buildFullMapString( %this.index ) );
+     return;   
    }
+    $vehicleMapped = false;
 
    // Look for the index of the previous mapping.
    %prevMapIndex = findRemapCmdIndex( %prevMap );