- fix bug with tires change choice for player

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

Former-commit-id: b704a7a96ca1569b29d7a219d580067a8750f5d8
Former-commit-id: 3f25b52d781696c051109c687393df3ccc338f41
This commit is contained in:
torcs-ng 2023-03-11 15:59:07 +00:00
parent 22630d2cd4
commit 87801dc8cf

View file

@ -744,9 +744,9 @@ void HumanDriver::new_race(int index, tCarElt* car, tSituation *s)
}//KEYBOARD
}//for i
//initialize the force feedback
forceFeedback.readConfiguration(car->_carName);
//initialize the force feedback
forceFeedback.readConfiguration(car->_carName);
}
void HumanDriver::pause_race(int index, tCarElt* /*car*/, tSituation* /*s*/)
@ -1040,7 +1040,7 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
// pow used to indicate the polarity of 'more turn'
if (cmd[CMD_LEFTSTEER].pow > 0)
ax0 = ax0 - cmd[CMD_LEFTSTEER].deadZone;
else
else
ax0 = 1 - ax0 - cmd[CMD_LEFTSTEER].deadZone;
if (ax0 < 0) ax0 = 0;
@ -1128,7 +1128,7 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
// pow used to indicate the polarity of 'more turn'
if (cmd[CMD_RIGHTSTEER].pow > 0)
ax0 = ax0 - cmd[CMD_RIGHTSTEER].deadZone;
else
else
ax0 = 1 - ax0 - cmd[CMD_RIGHTSTEER].deadZone;
if (ax0 < 0) ax0 = 0;
@ -1202,12 +1202,12 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
}
car->_steerCmd = leftSteer + rightSteer;
//send force feedback effect to the wheel
//dont' even try to do it if steer command is on a keyboard because it somehow manage to crash (unable to identify the joystic to send FF to?)
if(cmd[CMD_LEFTSTEER].type != GFCTRL_TYPE_KEYBOARD && cmd[CMD_LEFTSTEER].type != GFCTRL_TYPE_MOUSE_AXIS){
// v<- this controller detenction does not make ->v
// v<- sense to me ->v
//send force feedback effect to the wheel
//dont' even try to do it if steer command is on a keyboard because it somehow manage to crash (unable to identify the joystic to send FF to?)
if(cmd[CMD_LEFTSTEER].type != GFCTRL_TYPE_KEYBOARD && cmd[CMD_LEFTSTEER].type != GFCTRL_TYPE_MOUSE_AXIS){
// v<- this controller detenction does not make ->v
// v<- sense to me ->v
HCtx[idx]->lastForceFeedbackIndex = int((cmd[CMD_LEFTSTEER].val) / GFCTRL_JOY_NUMBER);
HCtx[idx]->lastForceFeedbackLevel = forceFeedback.updateForce(car, s);
HCtx[idx]->lastForceFeedbackDir = 0;
@ -1215,7 +1215,7 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
HCtx[idx]->lastForceFeedbackIndex,
HCtx[idx]->lastForceFeedbackLevel,
HCtx[idx]->lastForceFeedbackDir );
}
}
#define GLANCERATE 3 // speed at which the driver turns his head, ~1/3s to full glance
newGlance = car->_glance;
@ -1226,14 +1226,14 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
|| (cmd[CMD_LEFTGLANCE].type == GFCTRL_TYPE_JOY_ATOB && cmd[CMD_LEFTGLANCE].deadZone != 0))
{
newGlance = newGlance - GLANCERATE * s->deltaTime;
if (newGlance < -0.5) newGlance=-0.5;
if (newGlance < -0.5) newGlance=-0.5;
} else if ((cmd[CMD_RIGHTGLANCE].type == GFCTRL_TYPE_JOY_BUT && joyInfo->levelup[cmd[CMD_RIGHTGLANCE].val])
|| (cmd[CMD_RIGHTGLANCE].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->button[cmd[CMD_RIGHTGLANCE].val])
|| (cmd[CMD_RIGHTGLANCE].type == GFCTRL_TYPE_KEYBOARD && keyInfo[lookUpKeyMap(cmd[CMD_RIGHTGLANCE].val)].state)
|| (cmd[CMD_RIGHTGLANCE].type == GFCTRL_TYPE_JOY_ATOB && cmd[CMD_RIGHTGLANCE].deadZone != 0))
{
{
newGlance = newGlance + GLANCERATE * s->deltaTime;
if (newGlance > 0.5) newGlance=0.5;
if (newGlance > 0.5) newGlance=0.5;
} else if (cmd[CMD_RIGHTGLANCE].type == GFCTRL_TYPE_JOY_AXIS && joyInfo->ax[cmd[CMD_RIGHTGLANCE].val] > cmd[CMD_RIGHTGLANCE].min)
{
newGlance = joyInfo->ax[cmd[CMD_RIGHTGLANCE].val];
@ -1276,10 +1276,10 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
|| (cmd[CMD_DASHB_NEXT].type == GFCTRL_TYPE_JOY_ATOB && cmd[CMD_DASHB_NEXT].deadZone != 0))
{
car->_dashboardActiveItem++;
if (car->_dashboardActiveItem >= car->_dashboardInstantNb + car->_dashboardRequestNb)
if (car->_dashboardActiveItem >= car->_dashboardInstantNb + car->_dashboardRequestNb)
{car->_dashboardActiveItem = 0;}
}
if ((cmd[CMD_DASHB_PREV].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgeup[cmd[CMD_DASHB_PREV].val])
|| (cmd[CMD_DASHB_PREV].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->edgedn[cmd[CMD_DASHB_PREV].val])
|| (cmd[CMD_DASHB_PREV].type == GFCTRL_TYPE_KEYBOARD && keyInfo[lookUpKeyMap(cmd[CMD_DASHB_PREV].val)].edgeDn)
@ -1289,7 +1289,7 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
if (car->_dashboardActiveItem < 0)
{car->_dashboardActiveItem = car->_dashboardInstantNb + car->_dashboardRequestNb - 1;}
}
tDashboardItem *item;
if (car->_dashboardActiveItem < car->_dashboardInstantNb) {
item = &(car->_dashboardInstant[car->_dashboardActiveItem]);
@ -1321,7 +1321,7 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
car->ctrl.setupChangeCmd = item;
}
}
if ((cmd[CMD_DASHB_DEC].type == GFCTRL_TYPE_JOY_BUT && joyInfo->edgeup[cmd[CMD_DASHB_DEC].val])
|| (cmd[CMD_DASHB_DEC].type == GFCTRL_TYPE_MOUSE_BUT && mouseInfo->edgedn[cmd[CMD_DASHB_DEC].val])
|| (cmd[CMD_DASHB_DEC].type == GFCTRL_TYPE_KEYBOARD && keyInfo[lookUpKeyMap(cmd[CMD_DASHB_DEC].val)].edgeDn)
@ -1347,8 +1347,8 @@ static void common_drive(const int index, tCarElt* car, tSituation *s)
car->ctrl.setupChangeCmd = item;
}
}
switch (cmd[CMD_BRAKE].type) {
case GFCTRL_TYPE_JOY_AXIS:
brake = joyInfo->ax[cmd[CMD_BRAKE].val];
@ -1681,7 +1681,7 @@ static void common_brake(const int idx, tCarElt* car, tSituation *s)
if (HCtx[idx]->useESP)
{
float DriftAngle = atan2(car->_speed_Y,car->_speed_X) - car->_yaw;
FLOAT_NORM_PI_PI(DriftAngle);
FLOAT_NORM_PI_PI(DriftAngle);
if (DriftAngle > 4.0/180.0*PI)
{
@ -1720,10 +1720,10 @@ static void common_brake(const int idx, tCarElt* car, tSituation *s)
}
car->ctrl.singleWheelBrakeMode = 1;
car->ctrl.brakeFrontRightCmd = (float) (car->_brakeCmd * HCtx[idx]->brakeRep * HCtx[idx]->brakeRight * HCtx[idx]->brakeFront);
car->ctrl.brakeFrontLeftCmd = (float) (car->_brakeCmd * HCtx[idx]->brakeRep * HCtx[idx]->brakeLeft * HCtx[idx]->brakeFront);
car->ctrl.brakeRearRightCmd = (float) (car->_brakeCmd * (1 - HCtx[idx]->brakeRep) * HCtx[idx]->brakeRight * HCtx[idx]->brakeRear);
car->ctrl.brakeRearLeftCmd = (float) (car->_brakeCmd * (1 - HCtx[idx]->brakeRep) * HCtx[idx]->brakeLeft * HCtx[idx]->brakeRear);
car->ctrl.brakeFrontRightCmd = (float) (car->_brakeCmd * HCtx[idx]->brakeRep * HCtx[idx]->brakeRight * HCtx[idx]->brakeFront);
car->ctrl.brakeFrontLeftCmd = (float) (car->_brakeCmd * HCtx[idx]->brakeRep * HCtx[idx]->brakeLeft * HCtx[idx]->brakeFront);
car->ctrl.brakeRearRightCmd = (float) (car->_brakeCmd * (1 - HCtx[idx]->brakeRep) * HCtx[idx]->brakeRight * HCtx[idx]->brakeRear);
car->ctrl.brakeRearLeftCmd = (float) (car->_brakeCmd * (1 - HCtx[idx]->brakeRep) * HCtx[idx]->brakeLeft * HCtx[idx]->brakeRear);
}
else
car->ctrl.singleWheelBrakeMode = 0;
@ -2087,11 +2087,21 @@ int HumanDriver::pit_cmd(int index, tCarElt* car, tSituation *s)
//car->_pitRepair = (int)car->_dammage;
car->_pitRepair = car->setup.reqRepair.desired_value;
if (car->setup.reqPenalty.desired_value > 0.9) {
if (car->setup.reqPenalty.desired_value > 0.9)
{
car->_pitStopType = RM_PIT_STOPANDGO;
} else {
}
else
{
car->_pitStopType = RM_PIT_REPAIR;
car->pitcmd.tireChange = tCarPitCmd::TireChange::NONE;
if (car->setup.reqTireset.desired_value > 0)
{
GfLogDebug("~ player tyre change asked = %.0f", car->setup.reqTireset.desired_value);
car->pitcmd.tireChange = (tCarPitCmd::TireChange::ALL);
}
}
if (HCtx[idx]) {
@ -2330,7 +2340,7 @@ void HumanDriver::human_prefs(const int robot_index, int player_index)
cmdCtrl[CMD_GEAR_1].type = GFCTRL_TYPE_NOT_AFFECTED;
}
}
HumanDriver::HumanDriver(const char *robotname)