- Update USR's driver

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

Former-commit-id: edd2529a11bbd5892b2550955c0cefeb1d8918e5
Former-commit-id: 1aa4ee8e81363386f7e06c5369ca95d23737ff0e
This commit is contained in:
torcs-ng 2020-02-23 23:21:33 +00:00
parent c56f6a7e1a
commit 6cd820d139
4 changed files with 16 additions and 16 deletions

View file

@ -57,7 +57,7 @@ void SingleCardata::update()
TYREWEAR = MIN(TyreTreadDepthFront(), TyreTreadDepthRear()); TYREWEAR = MIN(TyreTreadDepthFront(), TyreTreadDepthRear());
CRITICAL_TYREWEAR = MAX(MAX(car->_tyreCritTreadDepth(0), car->_tyreCritTreadDepth(1)), MAX(car->_tyreCritTreadDepth(2), car->_tyreCritTreadDepth(3))); CRITICAL_TYREWEAR = MAX(MAX(car->_tyreCritTreadDepth(0), car->_tyreCritTreadDepth(1)), MAX(car->_tyreCritTreadDepth(2), car->_tyreCritTreadDepth(3)));
LogUSR.info(" # Condition = %.7f - wear tread = %.7f - Critical tread = %.7f\n", GRIP_FACTOR, TYREWEAR, CRITICAL_TYREWEAR); LogUSR.debug(" # Condition = %.7f - wear tread = %.7f - Critical tread = %.7f\n", GRIP_FACTOR, TYREWEAR, CRITICAL_TYREWEAR);
} }
lastspeed[2].ax = lastspeed[1].ax; lastspeed[2].ax = lastspeed[1].ax;

View file

@ -140,9 +140,9 @@ Driver::Driver(int index)
opponents = NULL; opponents = NULL;
opponent = NULL; opponent = NULL;
pit = NULL; pit = NULL;
strategy = nullptr; strategy = NULL;
cardata = nullptr; cardata = NULL;
mycardata = nullptr; mycardata = NULL;
currentsimtime = 0.0; currentsimtime = 0.0;
test_raceline = test_rnd_raceline = 0; test_raceline = test_rnd_raceline = 0;
outside_overtake_inhibitor = 1.0f; outside_overtake_inhibitor = 1.0f;
@ -680,7 +680,7 @@ bool Driver::calcSpeed()
if(mycardata->HasTYC) if(mycardata->HasTYC)
{ {
if (mycardata->TYREWEAR < mycardata->CRITICAL_TYREWEAR + 0.02) if ((mycardata->TYREWEAR / 100) < mycardata->CRITICAL_TYREWEAR + 0.05)
factor *= 1.0 - (1.0 * mycardata->GRIP_FACTOR); factor *= 1.0 - (1.0 * mycardata->GRIP_FACTOR);
} }

View file

@ -856,9 +856,9 @@ double LRaceLine::getCornerSpeed(int Div, int rl)
if (!(labelOverride->getOverrideValue(Div, &cornerspeed_cold_override))) if (!(labelOverride->getOverrideValue(Div, &cornerspeed_cold_override)))
cornerspeed_cold_override = cornerspeed_override; cornerspeed_cold_override = cornerspeed_override;
if (cardata->GRIP_FACTOR < 0.8) if (cardata->GRIP_FACTOR < 0.9)
coldfactor = MIN(1.0, MAX(0.5, cornerspeed_cold_override / cornerspeed_override)); coldfactor = MIN(1.0, MAX(0.5, cornerspeed_cold_override / cornerspeed_override));
else if (cardata->GRIP_FACTOR < 0.70) else if (cardata->GRIP_FACTOR < 0.90)
coldfactor = MIN(1.0, MAX(0.4, (cardata->GRIP_FACTOR))); coldfactor = MIN(1.0, MAX(0.4, (cardata->GRIP_FACTOR)));
if (cardata->GRIP_FACTOR < 0.8) if (cardata->GRIP_FACTOR < 0.8)
@ -887,9 +887,9 @@ double LRaceLine::getCornerSpeed(int Div, int rl)
if (!(labelOverride->getOverrideValue(Div, &cornerspeed_cold_override))) if (!(labelOverride->getOverrideValue(Div, &cornerspeed_cold_override)))
cornerspeed_cold_override = cornerspeed_override; cornerspeed_cold_override = cornerspeed_override;
if (cardata->GRIP_FACTOR < 0.8) if (cardata->GRIP_FACTOR < 0.9)
coldfactor = MIN(1.0, MAX(0.5, cornerspeed_cold_override / cornerspeed_override)); coldfactor = MIN(1.0, MAX(0.5, cornerspeed_cold_override / cornerspeed_override));
else if (cardata->GRIP_FACTOR < 0.7) else if (cardata->GRIP_FACTOR < 0.8)
coldfactor = MIN(1.0, MAX(0.4, cardata->GRIP_FACTOR)); coldfactor = MIN(1.0, MAX(0.4, cardata->GRIP_FACTOR));
} }
@ -919,9 +919,9 @@ double LRaceLine::getCornerSpeed(int Div, int rl)
if (!(labelOverride->getOverrideValue(Div, &cornerspeed_cold_override))) if (!(labelOverride->getOverrideValue(Div, &cornerspeed_cold_override)))
cornerspeed_cold_override = cornerspeed_override; cornerspeed_cold_override = cornerspeed_override;
if (cardata->GRIP_FACTOR < 0.8) if (cardata->GRIP_FACTOR < 0.9)
coldfactor = MIN(1.0, MAX(0.5, cornerspeed_cold_override / cornerspeed_override)); coldfactor = MIN(1.0, MAX(0.5, cornerspeed_cold_override / cornerspeed_override));
else if (cardata->GRIP_FACTOR < 0.7) else if (cardata->GRIP_FACTOR < 0.8)
coldfactor = MIN(1.0, MAX(0.4, (cardata->GRIP_FACTOR))); coldfactor = MIN(1.0, MAX(0.4, (cardata->GRIP_FACTOR)));
} }
@ -1718,7 +1718,7 @@ void LRaceLine::UpdateRacelineSpeeds(int raceType)
{ {
shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) || shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) ||
fabs(car->_dammage - cardata->damage) > 100.0f || fabs(car->_dammage - cardata->damage) > 100.0f ||
(/*(CaTT() - */cardata->GRIP_FACTOR < 0.8 || cardata->GRIP_FACTOR /*- CaTT()*/ > 0.9) && (cardata->TYREWEAR < cardata->CRITICAL_TYREWEAR + 0.50)); (cardata->GRIP_FACTOR < 0.8 || cardata->GRIP_FACTOR > 0.97) && ((cardata->TYREWEAR / 100 ) < cardata->CRITICAL_TYREWEAR + 0.05));
} }
else else
shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) || fabs(car->_dammage - cardata->damage) > 100.0f); shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) || fabs(car->_dammage - cardata->damage) > 100.0f);
@ -1728,7 +1728,7 @@ void LRaceLine::UpdateRacelineSpeeds(int raceType)
if (cardata->HasTYC == true) if (cardata->HasTYC == true)
shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) || shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) ||
fabs(car->_dammage - cardata->damage) > 100.0f || fabs(car->_dammage - cardata->damage) > 100.0f ||
(/*(CaTT() - */cardata->GRIP_FACTOR < 0.8 || cardata->GRIP_FACTOR /*- CaTT()*/ > 0.9) && (cardata->TYREWEAR < cardata->CRITICAL_TYREWEAR + 0.50)); (cardata->GRIP_FACTOR < 0.8 || cardata->GRIP_FACTOR > 0.97) || ((cardata->TYREWEAR / 100 ) < cardata->CRITICAL_TYREWEAR + 0.05));
else else
shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) || fabs(car->_dammage - cardata->damage) > 100.0f); shouldUpdate = (fabs(car->_fuel - cardata->fuel) > (raceType == RM_TYPE_QUALIF ? 1.0 : 5.0) || fabs(car->_dammage - cardata->damage) > 100.0f);
} }
@ -2142,7 +2142,7 @@ double LRaceLine::getLookAhead(int rl, double leftMargin, double rightMargin, bo
double rlfactor = 1.0 + fabs(tRInverse[rl][Next])*rlmult * (1.0 + fabs(tRInverse[rl][Next])*rlmult); double rlfactor = 1.0 + fabs(tRInverse[rl][Next])*rlmult * (1.0 + fabs(tRInverse[rl][Next])*rlmult);
double speedfactor = (tSpeed[rl][Next] - car->_speed_x < spdmrgn || fabs(tRInverse[rl][Next]) < 0.0005 ? 1.0 : MIN(1.0, (car->_speed_x + spdmrgn) / MIN(tSpeed[rl][Next], 80.0) / rlfactor)); double speedfactor = (tSpeed[rl][Next] - car->_speed_x < spdmrgn || fabs(tRInverse[rl][Next]) < 0.0005 ? 1.0 : MIN(1.0, (car->_speed_x + spdmrgn) / MIN(tSpeed[rl][Next], 80.0) / rlfactor));
#endif #endif
double trfactor = MIN(1.0, MAX(0.7, 0.7 + (cardata->GRIP_FACTOR / cardata->TYREWEAR)*0.3)); double trfactor = MIN(1.0, MAX(0.7, 1.0 * cardata->GRIP_FACTOR ));
double fuelCarMu = cardata->carMu; double fuelCarMu = cardata->carMu;
double gripfactor = MAX(0.3, MIN(1.0, (cardata->carMu / fuelCarMu) * (cardata->carMu / fuelCarMu))); double gripfactor = MAX(0.3, MIN(1.0, (cardata->carMu / fuelCarMu) * (cardata->carMu / fuelCarMu)));
if (tSpeed[rl][Next] > tSpeed[rl][(Next - 5 + Divs) % Divs]) gripfactor = 1.0; if (tSpeed[rl][Next] > tSpeed[rl][(Next - 5 + Divs) % Divs]) gripfactor = 1.0;
@ -2221,7 +2221,7 @@ double LRaceLine::getLookAhead(int rl, double leftMargin, double rightMargin, bo
double lookahead = (lookAheadEmpty - (lookAheadEmpty - lookAhead)*fuel_status) * factor * speedfactor * trfactor * gripfactor; double lookahead = (lookAheadEmpty - (lookAheadEmpty - lookAhead)*fuel_status) * factor * speedfactor * trfactor * gripfactor;
if (cardata->GRIP_FACTOR < 0.90) if (cardata->GRIP_FACTOR < 0.90)
lookahead *= (lookAheadColdFactor - ((lookAheadColdFactor - 1.0) * (cardata->GRIP_FACTOR / cardata->TYREWEAR))); lookahead *= (lookAheadColdFactor - ((lookAheadColdFactor - 1.0) * (cardata->GRIP_FACTOR )));
return lookahead; return lookahead;
} }

View file

@ -508,7 +508,7 @@ bool SimpleStrategy::needPitstop(tCarElt* car, tSituation *s)
aFT = aFT / 2; aFT = aFT / 2;
if (tRL < raceRemainingLaps && raceRemainingLaps > 1 && if (tRL < raceRemainingLaps && raceRemainingLaps > 1 &&
(/*mW > m_mWL || */mW < 0.5f && cardata->TYREWEAR < 70.0f) || m_checkFuel ((cardata->TYREWEAR / 100 ) < cardata->CRITICAL_TYREWEAR)|| m_checkFuel
|| (m_checkDamage && mW > 0.4)) || (m_checkDamage && mW > 0.4))
{ {
pitNeeded = true; pitNeeded = true;