- Update USR's driver

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

Former-commit-id: 15e493bfa76b8f70bc031c9b054dc27fa2ee138a
Former-commit-id: 92acc07c4aba8132932d100aa2f3aebea00489c8
This commit is contained in:
torcs-ng 2020-02-23 00:54:57 +00:00
parent dcd3fee4e6
commit 047e0e7025
6 changed files with 155 additions and 171 deletions

View file

@ -678,8 +678,11 @@ bool Driver::calcSpeed()
{
double factor = 30.0;
if(mycardata->HasTYC)
{
if (mycardata->TYREWEAR < mycardata->CRITICAL_TYREWEAR + 0.02)
factor *= 1.0 + (1.0 * mycardata->GRIP_FACTOR);
factor *= 1.0 - (1.0 * mycardata->GRIP_FACTOR);
}
brakecmd = MIN(1.0f, factor * fabs(x));
}

View file

@ -24,7 +24,6 @@
#include "linemode.h"
#include "raceline.h"
#include "globaldefs.h"
//#define LINEMODE_DEBUG
//
// Public methods
@ -58,18 +57,11 @@ LLineMode::~LLineMode()
double LLineMode::GetTransitionIncrement(int div)
{
double ti = m_TransitionIncrement;
/*
if (fabs(m_Car->_accel_x) > 3.0)
{
double tiFactor1 = MIN(8.0, fabs(m_Car->_accel_x));
tiFactor1 *= tiFactor1 / 2;
double tiFactor2 = MAX(0.0, MIN(1.0, fabs(m_Car->ctrl.steer)) - 0.5);
ti *= MAX(0.1, MIN(1.0 - tiFactor1 / 32.0, 1.0 - tiFactor2 / 0.5));
}
*/
if (m_OverrideCollection)
{
LManualOverride *labelOverride = m_OverrideCollection->getOverrideForLabel(PRV_TRANSITION_INC);
if (labelOverride)
{
double tti = ti;
@ -77,8 +69,10 @@ double LLineMode::GetTransitionIncrement(int div)
ti = tti;
}
}
if (m_CurrentTime - m_TimerStarted < 0.5)
return MAX(0.0, ti * ((m_CurrentTime - m_TimerStarted) / 0.5));
return ti;
}
@ -102,9 +96,9 @@ bool LLineMode::IsOnHold(int div, bool stay_inside)
{
m_OnHold = false;
m_HoldApexDiv = -1;
#ifdef LINEMODE_DEBUG
fprintf(stderr, "%s: NO HOLD (A %d %d %d) = dist (%.1f > %.1f) || div %d != %d && line %s != %s\n", m_Car->_name, (distance > m_Car->_speed_x * 5), (m_HoldApexDiv < 0), (hold_div > 0 && hold_div != m_HoldApexDiv && m_PreferLine != this_prefer_line), distance, m_Car->_speed_x * 5, m_HoldApexDiv, hold_div, m_PreferLine == TR_STR ? "STR" : m_PreferLine == TR_RGT ? "RGT" : "LFT", this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT"); fflush(stderr);
#endif
LogUSR.debug("%s: NO HOLD (A %d %d %d) = dist (%.1f > %.1f) || div %d != %d && line %s != %s\n", m_Car->_name, (distance > m_Car->_speed_x * 5), (m_HoldApexDiv < 0), (hold_div > 0 && hold_div != m_HoldApexDiv && m_PreferLine != this_prefer_line), distance, m_Car->_speed_x * 5, m_HoldApexDiv, hold_div, m_PreferLine == TR_STR ? "STR" : m_PreferLine == TR_RGT ? "RGT" : "LFT", this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT");
return false;
}
@ -113,9 +107,9 @@ bool LLineMode::IsOnHold(int div, bool stay_inside)
{
m_OnHold = false;
m_HoldApexDiv = -1;
#ifdef LINEMODE_DEBUG
fprintf(stderr,"%s: NO HOLD (2)\n",m_Car->_name);fflush(stderr);
#endif
LogUSR.debug("%s: NO HOLD (2)\n",m_Car->_name);
return false;
}
@ -124,22 +118,19 @@ bool LLineMode::IsOnHold(int div, bool stay_inside)
{
ResetTimer();
m_HoldApexDiv = hold_div;
#ifdef LINEMODE_DEBUG
fprintf(stderr,"%s: HOLDING!!\n",m_Car->_name);fflush(stderr);
#endif
LogUSR.debug("%s: HOLDING!!\n",m_Car->_name);
return true;
}
#ifdef LINEMODE_DEBUG
fprintf(stderr, "%s: NO HOLD (C) line=%s, lftMarg=%.3f rgtMarg=%.3f\n", m_Car->_name, this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT",m_LeftCurrentMargin,m_RightCurrentMargin); fflush(stderr);
#endif
LogUSR.debug("%s: NO HOLD (C) line=%s, lftMarg=%.3f rgtMarg=%.3f\n", m_Car->_name, this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT",m_LeftCurrentMargin,m_RightCurrentMargin);
}
#ifdef LINEMODE_DEBUG
else
{
fprintf(stderr, "%s: NO HOLD (D), threat=%d\n", m_Car->_name, m_UnderThreat); fflush(stderr);
LogUSR.debug("%s: NO HOLD (D), threat=%d\n", m_Car->_name, m_UnderThreat);
}
#endif
m_HoldApexDiv = -1;
m_OnHold = false;
@ -220,16 +211,14 @@ void LLineMode::SetTargetMargins(int raceline, double leftMargin, double rightMa
if (m_LeftTargetMargin != 0.0 || m_RightTargetMargin != 1.0)
m_HoldApexDiv = -1;
//fprintf(stderr, "New Margins: %.3f %.3f (%d)\n", m_LeftTargetMargin, m_RightTargetMargin,force);
m_IsTransitioning = true;
}
}
void LLineMode::SetRecoverToRaceLine()
{
#ifdef LINEMODE_DEBUG
fprintf(stderr, "setRecoveryToRaceLine\n");fflush(stderr);
#endif
LogUSR.debug("setRecoveryToRaceLine\n");
if (m_LeftTargetMargin != 0.0 || m_RightTargetMargin != 1.0)
{
m_HoldApexDiv = -1;
@ -272,5 +261,4 @@ void LLineMode::SetPitting()
void LLineMode::ResetTimer()
{
m_TimerStarted = m_CurrentTime;
//prefer_line = LINE_MID;
}

View file

@ -29,7 +29,6 @@
#include "globaldefs.h"
#include "manual_override.h"
//enum { LINE_MID=0, LINE_LEFT, LINE_RIGHT, LINE_RL, LINE_RL_MID, LINE_RL_SLOW, LINE_LEFT_OUTSTEER, LINE_RIGHT_OUTSTEER, LINE_MID_COLD, LINE_LEFT_COLD, LINE_RIGHT_COLD, LINE_RL_COLD, LINE_RL_MID_COLD, LINE_RL_SLOW_COLD, LINE_LEFT_OUTSTEER_COLD, LINE_RIGHT_OUTSTEER_COLD, LINE_NONE };
enum { LINE_MID=0, LINE_LEFT, LINE_RIGHT, LINE_RL, LINE_RL_MID, LINE_RL_SLOW, LINE_MID_COLD, LINE_LEFT_COLD, LINE_RIGHT_COLD, LINE_RL_COLD, LINE_RL_MID_COLD, LINE_RL_SLOW_COLD, LINE_NONE };
class LRaceLine;

View file

@ -27,10 +27,6 @@
#include "manual_override.h"
#include "globaldefs.h"
//#if defined(WIN32)
//#define snprintf _snprintf
//#endif
#define SECT_OVERRIDE "overrides"
LManualOverride::LManualOverride(const char *theLabel)
@ -340,21 +336,19 @@ void LManualOverrideCollection::loadFromFile(char *trackName, const char *botnam
void LManualOverrideCollection::saveToFile()
{
#if 0
char buffer[1025];
snprintf(buffer, 1024, "%sdrivers/%s/%s/%s.dat_save", GetLocalDir(), BOT_NAME, "carName", "trackName");
char buffer[1024];
snprintf(buffer, 1024, "%sdrivers/%s/%s/%s.dat_save", GetLocalDir(), "USR", "carName", "trackName");
FILE *filepointer = fopen(buffer, "w");
if (filepointer)
{
for (int i=0; i<OVERRIDE_COUNT; i++)
for (int i=0; i < override_count; i++)
{
overrides[i]->saveToFile(filepointer);
}
fclose(filepointer);
}
#endif
}
LManualOverride *LManualOverrideCollection::getOverrideForLabel(const char *label)

View file

@ -972,9 +972,9 @@ double LRaceLine::getBrakeDist(int Div, int rl)
if (!(labelOverride->getOverrideValue(Div, &brakedelay_override)))
brakedelay_override = brakeDist;
if (cardata->HasTYC == TRUE && cardata->GRIP_FACTOR < 0.8)
if (cardata->GRIP_FACTOR < 0.8)
coldfactor = MIN(1.0, brakedelay_cold_override / brakedelay_override);
else if (cardata->HasTYC == TRUE && cardata->GRIP_FACTOR < 0.7)
else if (cardata->GRIP_FACTOR < 0.7)
coldfactor = MIN(1.0, (cardata->GRIP_FACTOR));
}
}
@ -1852,9 +1852,10 @@ void LRaceLine::ComputeRacelineSpeed(int i, int rl, double **tSpeed, int speedrl
if (MaxSpeed > 25.0 && fabs(rInverse) > 0.0005)
{
if (rInverse < 0.0)
MaxSpeed = (MaxSpeed /*- 20.0)*/ * cardata->GRIP_FACTOR_LEFT);
MaxSpeed = (MaxSpeed * cardata->GRIP_FACTOR_LEFT);
else if (rInverse > 0.0)
MaxSpeed = (MaxSpeed /*- 20.0) */* cardata->GRIP_FACTOR_RIGHT);
MaxSpeed = (MaxSpeed * cardata->GRIP_FACTOR_RIGHT);
}
}
else
{
@ -1866,7 +1867,6 @@ void LRaceLine::ComputeRacelineSpeed(int i, int rl, double **tSpeed, int speedrl
MaxSpeed = (MaxSpeed * 0.94);
}
}
}
double bc = getBumpCaution(i, speedrl);