- fix strategy tires on USR

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

Former-commit-id: ad49aadd883c309aeb3e15633c6e8021246c5707
Former-commit-id: 020cb8cd2942f9d3f62642a5f92ab5d7d4a3cbc6
This commit is contained in:
torcs-ng 2023-03-05 22:55:32 +00:00
parent a526e789d7
commit 0c7ea892a2
2 changed files with 24 additions and 23 deletions

View file

@ -315,8 +315,8 @@ void Pit::update()
if(mMyCar->HASTYC) if(mMyCar->HASTYC)
{ {
pittyres = (mMyCar->tires()->TyreTreadDepth() < 10.00 && remaininglaps > 5.0); pittyres = (((mMyCar->tires()->TyreTreadDepth() < 10.00) && remaininglaps > 5.0) || (mMyCar->tires()->distLeft() / mTrack->length) < pitfuel);
LogUSR.debug(" # Tyre depth = %.2f Pit Tyres change = %i\n", mMyCar->tires()->TyreTreadDepth(), pittyres); LogUSR.info(" # Tyre depth = %.2f Pit Tyres change = %i\n", mMyCar->tires()->TyreTreadDepth(), pittyres);
} }
else else
{ {
@ -332,6 +332,7 @@ void Pit::update()
else if (pitfuel || pitdamage || pittyres) else if (pitfuel || pitdamage || pittyres)
{ {
setPitstop(true); setPitstop(true);
LogUSR.info(" # pit update !\n");
} }
else if (pitForPenalty()) else if (pitForPenalty())
{ {
@ -475,7 +476,7 @@ double Pit::calcRefuel()
double tiresdist = mMyCar->tires()->distLeft() - 1000.0; double tiresdist = mMyCar->tires()->distLeft() - 1000.0;
double stintdist = stintfuel * (mTrack->length / mAvgFuelPerLap); double stintdist = stintfuel * (mTrack->length / mAvgFuelPerLap);
if (tiresdist < stintdist || (mMyCar->tires()->TyreTreadDepth() > 25.0 - ((double)mCar->_remainingLaps / 10))) if (tiresdist > stintdist /*|| (mMyCar->tires()->TyreTreadDepth() < 25.0 - ((double)mCar->_remainingLaps / 10))*/)
{ {
mTireChange = false; mTireChange = false;
} }
@ -485,10 +486,11 @@ double Pit::calcRefuel()
} }
// Print infos // Print infos
LogUSR.debug("USR Fuel pitstops %i\n", fuelpitstops); LogUSR.info("USR Fuel pitstops %i\n", fuelpitstops);
LogUSR.debug("USR Fuel per meter %.7f\n", mAvgFuelPerLap / mTrack->length); LogUSR.info("USR Fuel per meter %.7f\n", mAvgFuelPerLap / mTrack->length);
LogUSR.debug("USR Tire pitstops %i\n", tirespitstops); LogUSR.info("USR Tire pitstops %i\n", tirespitstops);
LogUSR.debug("USR Tire wear per meter %.7f\n", mMyCar->tires()->avgWearPerMeter()); LogUSR.info("USR Tire wear per meter %.7f\n", mMyCar->tires()->avgWearPerMeter());
LogUSR.info("USR Tire distance %.7f\n", mMyCar->tires()->distLeft());
return stintfuel - mCar->_fuel; return stintfuel - mCar->_fuel;
} }
@ -533,10 +535,12 @@ void Pit::pitCommand()
if (mTireChange) if (mTireChange)
{ {
mCar->pitcmd.tireChange = (tCarPitCmd::TireChange) 1; mCar->pitcmd.tireChange = (tCarPitCmd::TireChange) 1;
LogUSR.info(" # USR tire change !!!\n");
} }
else else
{ {
mCar->pitcmd.tireChange = (tCarPitCmd::TireChange) 0; mCar->pitcmd.tireChange = (tCarPitCmd::TireChange) 0;
LogUSR.info(" # USR NO tire change !!!\n");
} }
mCar->pitcmd.stopType = RM_PIT_REPAIR; mCar->pitcmd.stopType = RM_PIT_REPAIR;

View file

@ -29,7 +29,7 @@ void Tires::init(const tCarElt* car)
{ {
mCar = car; mCar = car;
mDistWhenNew = 0; mDistWhenNew = 0;
mWear = 0.0; mWear = 100.0;
mHotTemp = ZEROC + GfParmGetNum(mCar->_carHandle, "private", "hottemp", (char*)NULL, 120.0); mHotTemp = ZEROC + GfParmGetNum(mCar->_carHandle, "private", "hottemp", (char*)NULL, 120.0);
mMuScale = GfParmGetNum(mCar->_carHandle, "private", "mu scale", (char*)NULL, 1.0); mMuScale = GfParmGetNum(mCar->_carHandle, "private", "mu scale", (char*)NULL, 1.0);
} }
@ -37,24 +37,22 @@ void Tires::init(const tCarElt* car)
void Tires::update() void Tires::update()
{ {
// Get tire wear // Get tire wear
/* mWear = 0.0; // mWear = 0.0;
double currGrain = 0.0, minWear = 100.0; double minWear = 10.0;
for (int i = 0; i < 4; i++) {
if (mCar->priv.wheel[i].currentWear > mWear) for (int i = 0; i < 4; i++)
{ {
mWear = mCar->priv.wheel[i].currentWear; if (mCar->priv.wheel[i].treadDepth < mWear)
{
mWear = mCar->priv.wheel[i].treadDepth;
} }
if (mCar->priv.wheel[i].currentWear < minWear) if (mCar->priv.wheel[i].treadDepth < minWear)
minWear = mCar->priv.wheel[i].currentWear; minWear = mCar->priv.wheel[i].treadDepth;
currGrain += mCar->priv.wheel[i].currentGraining;
} }
mAvgGrain = currGrain / 4;
// Check if tires were changed // Check if tires were changed
if (mWear < 0.001) if (mWear < 99.99)
{ {
mDistWhenNew = mCar->_distRaced; mDistWhenNew = mCar->_distRaced;
} }
@ -66,9 +64,8 @@ void Tires::update()
mAvgWearPerMeter = mWear / distused; mAvgWearPerMeter = mWear / distused;
} }
double wearuntilchange = 1.0 - mWear; double wearuntilchange = 100.0 - mWear;
//mDistLeft = wearuntilchange / mAvgWearPerMeter; mDistLeft = wearuntilchange / mAvgWearPerMeter;
mDistLeft = (minWear >= 0.9 && mAvgGrain > 0.75 ? 0.0 : 100000.0);*/
mGripFactor = updateGripFactor(); mGripFactor = updateGripFactor();
} }