Fixes #68 (Unable to select R and N with sequential shifting) Was a bad consequence of #30

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@2142 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: c25a10652cf1c06c6e8de7d758e81102c9c1d7fd
Former-commit-id: 8f8df279a6fd1ae83251f526bbabd4a14cf1529f
This commit is contained in:
pouillot 2010-01-17 18:14:15 +00:00
parent c78af87bc2
commit a5120109ff

View file

@ -987,6 +987,8 @@ getAutoClutch(int idx, int gear, int newgear, tCarElt *car)
static void
drive_mt(const int index, tCarElt* car, tSituation *s)
{
int i;
const int idx = index - 1;
const tControlCmd *cmd = HCtx[idx]->CmdControl;
@ -996,14 +998,17 @@ drive_mt(const int index, tCarElt* car, tSituation *s)
/* manual shift sequential */
if (HCtx[idx]->Transmission == eTransSeq)
{
/* Up shifting command */
if ((cmd[CMD_UP_SHFT].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgeup[cmd[CMD_UP_SHFT].val])
|| (cmd[CMD_UP_SHFT].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->edgeup[cmd[CMD_UP_SHFT].val])
|| (cmd[CMD_UP_SHFT].type == GFCTRL_TYPE_KEYBOARD && keyInfo[cmd[CMD_UP_SHFT].val].edgeUp)
|| (cmd[CMD_UP_SHFT].type == GFCTRL_TYPE_SKEYBOARD && skeyInfo[cmd[CMD_UP_SHFT].val].edgeUp))
{
if (HCtx[idx]->SeqShftAllowNeutral || car->_gearCmd > -1)
car->_gearCmd++;
}
/* Down shifting command */
if ((cmd[CMD_DN_SHFT].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgeup[cmd[CMD_DN_SHFT].val])
|| (cmd[CMD_DN_SHFT].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->edgeup[cmd[CMD_DN_SHFT].val])
|| (cmd[CMD_DN_SHFT].type == GFCTRL_TYPE_KEYBOARD && keyInfo[cmd[CMD_DN_SHFT].val].edgeUp)
@ -1012,12 +1017,23 @@ drive_mt(const int index, tCarElt* car, tSituation *s)
if (HCtx[idx]->SeqShftAllowNeutral || car->_gearCmd > 1)
car->_gearCmd--;
}
/* Reverse gear and Neutral gear commands */
for (i = CMD_GEAR_R; i <= CMD_GEAR_N; i++) {
if ((cmd[i].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgeup[cmd[i].val])
|| (cmd[i].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->edgeup[cmd[i].val])
|| (cmd[i].type == GFCTRL_TYPE_KEYBOARD && keyInfo[cmd[i].val].edgeUp)
|| (cmd[i].type == GFCTRL_TYPE_SKEYBOARD && skeyInfo[cmd[i].val].edgeUp))
{
car->_gearCmd = i - CMD_GEAR_N;
}
}
}
/* manual shift direct */
else if (HCtx[idx]->Transmission == eTransGrid)
{
int i;
/* Go to neutral gear if any gear command released (edge down) */
if (HCtx[idx]->RelButNeutral) {
for (i = CMD_GEAR_R; i <= CMD_GEAR_6; i++) {
if ((cmd[i].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgedn[cmd[i].val])
@ -1030,6 +1046,7 @@ drive_mt(const int index, tCarElt* car, tSituation *s)
}
}
/* Select the right gear if any gear command activated (edge up) */
for (i = CMD_GEAR_R; i <= CMD_GEAR_6; i++) {
if ((cmd[i].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgeup[cmd[i].val])
|| (cmd[i].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->edgeup[cmd[i].val])