/*@!Encoding:1252*/
variables
{
  int gGear = 1; // 0 == reverse; 1 == neutral; 2 - 6 == forward
}

on sysVar PowerTrain::GearDown
{
  if (!@this) return;
  
  if(gGear == 0) 
  { 
    return;
  }
  
  if(gGear == 1 && $CarSpeed > 5) return;
  else gGear--;
  
  GearShiftText(gGear);

  $Gear = gGear;
}

on sysVar PowerTrain::GearUp
{
  if (!@this) return;
  
  if(gGear == 6) 
  { 
    return; 
  }

  if(gGear == 0 && $CarSpeed > 5) return;
  else gGear++;

  GearShiftText(gGear);

  $Gear = gGear;
}

GearShiftText (int gear)
{
  switch(gear)
  {
    case 0: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"R");  break;
    case 1: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"0");  break; 
    case 2: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"1");  break;
    case 3: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"2");  break;
    case 4: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"3");  break;
    case 5: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"4");  break;
    case 6: sysSetVariableString(sysVar::PowerTrain::GearShiftText,"5");  break; 
  }
  @PowerTrain::GearShiftInfo = gear;
}

on start
{
  $Gear = 1;
  sysSetVariableString(sysVar::PowerTrain::GearShiftText, "0"); 
}

on key '+'
{
  gGear = $Gear;

  if ( ((gGear > 0) && (gGear < 6)) || ((gGear == 0) && ($CarSpeed <= 5)) )
  { 
    gGear++;
    GearShiftText(gGear);
    $Gear = gGear;
  }
}

on key '-'
{
  gGear = $Gear;

  if ( ((gGear > 1) && (gGear <= 6)) || ((gGear == 1) && ($CarSpeed <= 5)) )
  { 
    gGear--;
    GearShiftText(gGear);
    $Gear = gGear;
  }
}

