Remove compiler warnings

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

Former-commit-id: 6079371160f293aebaf00908a3dc6247c5bb62c5
Former-commit-id: d3aabbfb8efd051555edf6269499270141861903
This commit is contained in:
martkelder 2009-10-13 09:09:29 +00:00
parent 4de85ccaca
commit a579d5f336
32 changed files with 286 additions and 277 deletions

View file

@ -81,10 +81,10 @@
//--------------------------------------------------------------------------*
int TDriver::NBBOTS = MAX_NBBOTS; // Nbr of drivers/robots
double TDriver::CurrSimTime = 0; // Current simulation time
char* TDriver::MyBotName = "simplix"; // Name of this bot
char* TDriver::ROBOT_DIR = "drivers/simplix"; // Sub path to dll
char* TDriver::SECT_PRIV = "simplix private"; // Private section
char* TDriver::DEFAULTCARTYPE = "car1-trb1"; // Default car type
char const* TDriver::MyBotName = "simplix"; // Name of this bot
char const* TDriver::ROBOT_DIR = "drivers/simplix"; // Sub path to dll
char const* TDriver::SECT_PRIV = "simplix private"; // Private section
char const* TDriver::DEFAULTCARTYPE = "car1-trb1"; // Default car type
bool TDriver::AdvancedParameters = false; // Advanced parameters
bool TDriver::UseOldSkilling = false; // Use old skilling
bool TDriver::UseSCSkilling = false; // Use supercar skilling
@ -97,10 +97,10 @@ float TDriver::SpeedLimitScale = 25; // Speed limit scale
double TDriver::LengthMargin; // safety margin long.
bool TDriver::Qualification; // Global flag
static char *WheelSect[4] = // TORCS defined sections
static char const *WheelSect[4] = // TORCS defined sections
{SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
static double (TDriver::*CalcCrv)(double Crv);
//static double (TDriver::*CalcCrv)(double Crv);
//static double cTimeSum[7] = {0,0,0,0,0,0,0};
//==========================================================================*
@ -431,11 +431,11 @@ void TDriver::InitTrack
oSkillGlobal = oSkill = oDecelAdjustPerc = oDriverAggression = 0.0;
// Initialize race type array
char* RaceType[] =
char const* RaceType[] =
{"practice", "qualify", "race"};
// Initialize the base param path
char* BaseParamPath = TDriver::ROBOT_DIR;
char const* BaseParamPath = TDriver::ROBOT_DIR;
char* PathFilename = PathFilenameBuffer;
// Global skilling from Andrew Sumner ...
@ -490,7 +490,7 @@ void TDriver::InitTrack
}
// Get individual skilling
int SkillEnabled = 0;
//int SkillEnabled = 0;
snprintf(PathFilenameBuffer,BUFLEN,"%s/%d/skill.xml",
BaseParamPath,oIndex);
GfOut("#PathFilename: %s\n", PathFilenameBuffer); // itself
@ -1075,7 +1075,7 @@ void TDriver::Drive()
oAccel = 1.0; // Assume full throttle
oBrake = 0.0; // Assume no braking
double StartTimeStamp = RtTimeStamp();
//double StartTimeStamp = RtTimeStamp();
double Pos = oTrackDesc.CalcPos(oCar); // Get current pos on track

View file

@ -387,10 +387,10 @@ private:
static int NBBOTS; // Nbr of cars
static double CurrSimTime; // Current simulation time
static char* MyBotName; // Name of this bot
static char* ROBOT_DIR; // Sub path to dll
static char* SECT_PRIV; // Private section
static char* DEFAULTCARTYPE; // Default car type
static char const* MyBotName; // Name of this bot
static char const* ROBOT_DIR; // Sub path to dll
static char const* SECT_PRIV; // Private section
static char const* DEFAULTCARTYPE; // Default car type
static bool AdvancedParameters;
static bool UseOldSkilling;

View file

@ -380,7 +380,7 @@ double TFixCarParam::CalcMaxSpeed
if (oStrategy->OutOfPitlane())
factor *= 1.0 - MAX(0.0,TDriver::SpeedLimitScale * (AbsCrv - TDriver::SpeedLimitBase));
}
/**/
*//**/
double Den;
double ScaleBump;

View file

@ -107,7 +107,7 @@ static const int MAXNBBOTS = MAX_NBBOTS; // Number of drivers/robots
static const int BUFSIZE = 256;
// Default driver names
static char* defaultBotName[MAXNBBOTS] = {
static char const* defaultBotName[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
@ -115,7 +115,7 @@ static char* defaultBotName[MAXNBBOTS] = {
};
// Default driver descriptions
static char* defaultBotDesc[MAXNBBOTS] = {
static char const* defaultBotDesc[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
@ -161,7 +161,7 @@ char undefined[] = "undefined";
// Robot of this modul
// Roboter des Moduls
//--------------------------------------------------------------------------*
static char** BotDesc = defaultBotDesc;
static char const** BotDesc = defaultBotDesc;
static TDriver *cRobot[MAXNBBOTS];
static TCommonData gCommonData;
@ -211,7 +211,7 @@ void* GetFileHandle(const char* RobotName)
//==========================================================================*
// Set parameters
//--------------------------------------------------------------------------*
void SetParameters(int N, char* DefaultCarType)
void SetParameters(int N, char const* DefaultCarType)
{
NBBOTS = N;
TDriver::NBBOTS = N; // Used nbr of cars

View file

@ -485,7 +485,7 @@ bool TOpponent::Classify(
double T =
(fabs(OpState.CarDistLat) - OpState.MinDistLat) / fabs(OpState.CarDiffVelLat);
double CollX = OpState.CarDiffVelLong * T - OpState.CarDistLong;
//double CollX = OpState.CarDiffVelLong * T - OpState.CarDistLong;
// if ((CollX > AheadDist)
// && (CollX < OpState.MinDistLong))

View file

@ -301,8 +301,8 @@ void Driver::initTrack(tTrack* t, void *carHandle, void **carParmHandle, tSituat
char carName[256];
{
char *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char *key = PRM_CAR;
char const *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char const *key = PRM_CAR;
strncpy( carName, GfParmGetStr(carHandle, path, key, ""), sizeof(carName) );
char *p = strrchr(carName, '.');
if (p) *p = '\0';
@ -587,8 +587,8 @@ void Driver::newRace(tCarElt* car, tSituation *s)
char carName[256];
{
char *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char *key = PRM_CAR;
char const *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char const *key = PRM_CAR;
strncpy( carName, GfParmGetStr(car->_carHandle, path, key, ""), sizeof(carName) );
char *p = strrchr(carName, '.');
if (p) *p = '\0';
@ -1034,7 +1034,7 @@ float Driver::getAccel()
if (pit->getInPit() && car->_brakeCmd == 0.0f)
{
float s = pit->toSplineCoord( car->_distFromStartLine );
//float s = pit->toSplineCoord( car->_distFromStartLine );
#if 0
if (pit->needPitstop())
@ -1376,7 +1376,7 @@ float Driver::getSteer(tSituation *s)
bool yr_ok = (fabs(car->_yaw_rate) < 0.1 || (car->_yaw_rate > rldata->rInverse*100-0.1 && car->_yaw_rate < rldata->rInverse*100+0.1));
bool angle_ok = (angle > rldata->rlangle-0.06 && angle < rldata->rlangle+0.06);
double rlsteer = (fabs(rldata->rInverse) >= 0.004 ? rldata->rInverse * 12 : 0.0);
//double rlsteer = (fabs(rldata->rInverse) >= 0.004 ? rldata->rInverse * 12 : 0.0);
bool steer_ok = (racesteer<laststeer+0.05 && racesteer>laststeer-0.05);
double skid = (car->_skid[0] + car->_skid[1] + car->_skid[2] + car->_skid[3]) / 2;
@ -1543,7 +1543,7 @@ double Driver::calcSteer( double targetAngle, int rl )
if (fabs(nextangle) > fabs(speedangle))
{
// steer into the skid
double sa = MAX(-0.3, MIN(0.3, speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, speedangle/3));
//double anglediff = (sa - angle) * (0.3 + fabs(angle)/6);
double anglediff = (speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
steer += (float) (anglediff*SkidSteer);
@ -1647,7 +1647,7 @@ float Driver::correctSteering( float avoidsteer, float racesteer )
return avoidsteer;
float steer = avoidsteer;
float accel = MIN(0.0f, car->_accel_x);
//float accel = MIN(0.0f, car->_accel_x);
double speed = 50.0; //MAX(50.0, currentspeed);
double changelimit = MIN(raceline->correctLimit(avoidsteer, racesteer), (((120.0-currentspeed)/6000) * (0.1 + fabs(rldata->mInverse/4)))) * SmoothSteer;
@ -2023,7 +2023,7 @@ vec2f Driver::getTargetPoint(bool use_lookahead, double targetoffset)
// all the BT code below is for steering into pits only.
s.x = (seg->vertex[TR_SL].x + seg->vertex[TR_SR].x)/2;
s.y = (seg->vertex[TR_SL].y + seg->vertex[TR_SR].y)/2;
double dx, dy;
//double dx, dy;
vec2f t, rt;
if ( seg->type == TR_STR) {
@ -2059,9 +2059,9 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
if (!o) return false;
#if 1
int segid = car->_trkPos.seg->id;
//int segid = car->_trkPos.seg->id;
tCarElt *ocar = o->getCarPtr();
int osegid = ocar->_trkPos.seg->id;
//int osegid = ocar->_trkPos.seg->id;
double otry_factor = (lenient ? (0.2 + MAX(0.0, 1.0 - ((simtime-frontavoidtime)/7.0)) * 0.8) : 1.0);
double overtakecaution = MAX(0.0, rldata->overtakecaution + (outside ? MIN(0.0, car->_accel_x/8) : 0.0)) - driver_aggression/2;
double orInv=0.0, oAspeed=0.0;
@ -2166,7 +2166,7 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
float Driver::getOffset()
{
int i, avoidmovt = 0;
double catchdist, mincatchdist = MAX(100.0, car->_speed_x * 5), mindist = -1000.0;
double /*catchdist,*/ mincatchdist = MAX(100.0, car->_speed_x * 5), mindist = -1000.0;
Opponent *o = NULL;
double lane2left = rldata->lane * car->_trkPos.seg->width;
double lane2right = car->_trkPos.seg->width-lane2left;
@ -2179,7 +2179,7 @@ float Driver::getOffset()
// Increment speed dependent.
//double incspeed = MIN(40.0, MAX(30.0, currentspeed));
//double incfactor = (MAX_INC_FACTOR*0.5 - MIN(incspeed/10, MAX_INC_FACTOR*0.5-0.5)) * 60 * IncFactor;
double incspeed = MIN(60.0, MAX(40.0, currentspeed)) - 10.0;
//double incspeed = MIN(60.0, MAX(40.0, currentspeed)) - 10.0;
//double incfactor = (MAX_INC_FACTOR - MIN(fabs(incspeed)/MAX_INC_FACTOR, (MAX_INC_FACTOR - 1.0f))) * (10.0f + MAX(0.0, (CA-1.9)*10)) * IncFactor;
double incfactor = (MAX_INC_FACTOR - MIN(40.0/MAX_INC_FACTOR, (MAX_INC_FACTOR - 1.0f))) * (10.0f + MAX(0.0, (CA-1.9)*10)) * IncFactor;
@ -2204,7 +2204,7 @@ float Driver::getOffset()
double moffset = car->_trkPos.toMiddle;
double origoffset = moffset;
//double origoffset = moffset;
double Width = car->_trkPos.seg->width;
#if 1
@ -2235,8 +2235,8 @@ float Driver::getOffset()
{
// reduce amount we deviate from the raceline according to how long we've been avoiding, and also
// how fast we're going.
double dspeed = MAX(0.0, rldata->speed - currentspeed) * 4;
double pspeed = MAX(1.0, 60.0 - (currentspeed - (30.0 + MAX(0.0, car->_accel_x) + dspeed))) / 10;
//double dspeed = MAX(0.0, rldata->speed - currentspeed) * 4;
//double pspeed = MAX(1.0, 60.0 - (currentspeed - (30.0 + MAX(0.0, car->_accel_x) + dspeed))) / 10;
// instead of toMiddle just aiming at where the car currently is, we move it in the direction
// the car's travelling ... but less so if the speedangle is different from the car's angle.
@ -2524,13 +2524,13 @@ fprintf(stderr,"%s -> %s CANCEL 1 (%.1f > %.1f || %.1f < %.1f || %.3f > %.3f)\n"
tCarElt *ocar = o->getCarPtr();
// Compute the width around the middle which we can use for overtaking.
float w = ocar->_trkPos.seg->width/WIDTHDIV-BORDER_OVERTAKE_MARGIN;
//float w = ocar->_trkPos.seg->width/WIDTHDIV-BORDER_OVERTAKE_MARGIN;
// Compute the opponents distance to the middle.
float otm = ocar->_trkPos.toMiddle;
//float otm = ocar->_trkPos.toMiddle;
// Define the with of the middle range.
float wm = ocar->_trkPos.seg->width*CENTERDIV;
//float wm = ocar->_trkPos.seg->width*CENTERDIV;
float sidedist = fabs(car->_trkPos.toMiddle-ocar->_trkPos.toMiddle);
double sdist = (rInverse > 0.0 ? (-sidedist - 3.0) : (sidedist - 3.0));
//double sdist = (rInverse > 0.0 ? (-sidedist - 3.0) : (sidedist - 3.0));
//int avoidingside = (otm > wm && myoffset > -w) ? TR_RGT : ((otm < -wm && myoffset < w) ? TR_LFT : TR_STR);
int avoidingside = (car->_trkPos.toLeft > ocar->_trkPos.toLeft ? TR_LFT : TR_RGT);
@ -2878,7 +2878,7 @@ fprintf(stderr,"%s BEHIND %s (%d %d %d %d)\n",car->_name,ocar->_name,((o->getSta
double factor = 0.25;//(fabs(car->_trkPos.toMiddle) < car->_trkPos.seg->width/2 + 2.0 ? 0.25 : 1.0);
if (fabs(myoffset) > fabs(rldata->offset))
{
double inc = OVERTAKE_OFFSET_INC * MIN(lftinc, rgtinc) * factor;
//double inc = OVERTAKE_OFFSET_INC * MIN(lftinc, rgtinc) * factor;
if (myoffset < rldata->offset && myoffset < 2.0)
myoffset += (float) (MIN(rldata->offset-myoffset, OVERTAKE_OFFSET_INC * rgtinc/3 * factor));
else if (myoffset > rldata->offset && myoffset > 2.0)
@ -3060,7 +3060,7 @@ void Driver::update(tSituation *s)
for (int i=0; i<opponents->getNOpponents(); i++)
{
int idx = opponent[i].getIndex();
//int idx = opponent[i].getIndex();
if (opponent[i].getTeam() != TEAM_FRIEND) continue;
if (opponent[i].getCarPtr() == car) continue;
if (opponent[i].getCarPtr()->_state > RM_CAR_STATE_PIT)
@ -3449,7 +3449,7 @@ void Driver::initWheelPos()
{
for (int i=0; i<4; i++)
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float rh = 0.0;
rh = GfParmGetNum(car->_carHandle,WheelSect[i],PRM_RIDEHEIGHT,(char *)NULL, 0.10f);
wheelz[i] = (-rh / 1.0 + car->info.wheel[i].wheelRadius) - 0.01;
@ -3458,7 +3458,7 @@ void Driver::initWheelPos()
void Driver::initCa()
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float rearwingarea = GfParmGetNum(car->_carHandle, SECT_REARWING, PRM_WINGAREA, (char*) NULL, 0.0f);
float rearwingangle = GfParmGetNum(car->_carHandle, SECT_REARWING, PRM_WINGANGLE, (char*) NULL, 0.0f);
float wingca = 1.23f*rearwingarea*sin(rearwingangle);
@ -3486,7 +3486,7 @@ void Driver::initCw()
// Init the friction coefficient of the the tires.
void Driver::initTireMu()
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float tm = FLT_MAX;
int i;
@ -3616,7 +3616,7 @@ float Driver::filterABS(float brake)
{
if (car->_speed_x < ABS_MINSPEED) return brake;
float origbrake = brake;
float rearskid = MAX(0.0f, MAX(car->_skid[2], car->_skid[3]) - MAX(car->_skid[0], car->_skid[1]));
//float rearskid = MAX(0.0f, MAX(car->_skid[2], car->_skid[3]) - MAX(car->_skid[0], car->_skid[1]));
int i;
float slip = 0.0f;
for (i = 0; i < 4; i++) {

View file

@ -214,15 +214,15 @@ fprintf(stderr," FRONTSLOW\n");
double max = MAX(lane, MAX(mycar->_trkPos.seg->width-mycar->_dimension_y/2, driver->getNextLeft()));
double min = MIN(lane, MIN(mycar->_dimension_y/2, driver->getNextLeft()));
//double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(driver->getNextLeft()-mycar->_trkPos.toLeft) * (t_impact*deltamult)))) - driver->getAngle();
double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(t_impact*driver->getSpeedAngle())) + driver->getAngle()));
//double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(t_impact*driver->getSpeedAngle())) + driver->getAngle()));
max = MAX(nextleft, car->_trkPos.seg->width-car->_dimension_y/2);
min = MIN(nextleft, car->_dimension_y/2);
//double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(nextleft-car->_trkPos.toLeft) * (t_impact*deltamult)))) - angle;
double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(t_impact*speedangle)) + angle));
//double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(t_impact*speedangle)) + angle));
//double sepdist = fabs(mleft - oleft);
double sepdist = fabs(car->_trkPos.toLeft - mycar->_trkPos.toLeft) + driver->getAngle()*2;
int diverging = 0; //(sepdist > (fabs(getWidth()/2.0f) + mycar->_dimension_y/3.0f) + 0.3);
//int diverging = 0; //(sepdist > (fabs(getWidth()/2.0f) + mycar->_dimension_y/3.0f) + 0.3);
//t_impact = MIN(mspeed/7, t_impact);
@ -234,7 +234,7 @@ fprintf(stderr," FRONTSLOW\n");
float cardist = car->_trkPos.toMiddle - mycar->_trkPos.toMiddle;
sidedist = cardist;
cardist = sepdist - fabs(getWidth()/2.0f) - mycar->_dimension_y/2.0f;
double deduction = t_impact / MAX(1.0, distance);
//double deduction = t_impact / MAX(1.0, distance);
if (cardist < SIDE_MARGIN) {
if (DebugMsg & debug_brake)
fprintf(stderr,"FRONTCOLLIDE %s cardist=%.3f sepdist=%.3f\n",car->_name,cardist,sepdist);
@ -394,7 +394,7 @@ fprintf(stderr," FRONTFAST\n");
if (team == TEAM_FRIEND && car->_dammage-1000 < mycar->_dammage)
state |= OPP_FRONT_FOLLOW;
double dSpeed = mspeed;//driver->getSpeed();
//double dSpeed = mspeed;//driver->getSpeed();
//if (distance < 20.0 - (getSpeed()-driver->getSpeed())*4)
if (distance < 20.0 - (ospeed-mspeed)*4)
state |= OPP_FRONT;
@ -527,15 +527,15 @@ int Opponent::polyOverlap( tPosd *op, tPosd *dp )
int Opponent::testCollision(Driver *driver, double impact, double sizefactor, vec2f *targ )
{
tCarElt *mycar = driver->getCarPtr();
int collide = 0, i, j;
double nSlices = MAX(1.0, (impact * deltamult));
int /*collide = 0,*/ i/*, j*/;
//double nSlices = MAX(1.0, (impact * deltamult));
tCarElt *dcar = driver->getCarPtr();
double o_speedX = car->_speed_X;// + (cardata->getSpeedDeltaX()) * (impact * deltamult) / 2;
double o_speedY = car->_speed_Y;// + (cardata->getSpeedDeltaY()) * (impact * deltamult) / 2;
double d_speedX = dcar->_speed_X;// + driver->getSpeedDeltaX() * (impact * deltamult) / 2;
double d_speedY = dcar->_speed_Y;// + driver->getSpeedDeltaY() * (impact * deltamult) / 2;
tPosd o_cur[4], d_cur[4], o_curp[4], d_curp[4], o_new[4], d_new[4], o_new2[4], d_new2[4];
tPosd o_cur[4], d_cur[4], /*o_curp[4], d_curp[4],*/ o_new[4], d_new[4], o_new2[4], d_new2[4];
// set up car current positions
for (i=0; i<4; i++)
@ -558,8 +558,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
else
{
// position driver's car according to velocity angle
double d_newPos_x = dcar->pub.DynGC.pos.x + (d_speedX*impact);
double d_newPos_y = dcar->pub.DynGC.pos.y + (d_speedY*impact);
//double d_newPos_x = dcar->pub.DynGC.pos.x + (d_speedX*impact);
//double d_newPos_y = dcar->pub.DynGC.pos.y + (d_speedY*impact);
// correct corner positions
for (i=0; i<4; i++)
@ -572,8 +572,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
#if 1
{
// position opponent car according to velocity angle
double o_newPos_x = car->pub.DynGC.pos.x + (o_speedX*impact);
double o_newPos_y = car->pub.DynGC.pos.y + (o_speedY*impact);
//double o_newPos_x = car->pub.DynGC.pos.x + (o_speedX*impact);
//double o_newPos_y = car->pub.DynGC.pos.y + (o_speedY*impact);
// correct corner positions
for (i=0; i<4; i++)
@ -698,8 +698,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
double ti = MAX(0.001, impact) + 0.1;
tPosd *o_old1 = cardata->getCorner1();
tPosd *d_old1 = driver->getCorner1();
tPosd *o_old2 = cardata->getCorner2();
tPosd *d_old2 = driver->getCorner2();
//tPosd *o_old2 = cardata->getCorner2();
//tPosd *d_old2 = driver->getCorner2();
for (i=0; i<4; i++)
{

View file

@ -32,7 +32,7 @@
// Structures and Statics
////////////////////////////////////////////////////////////////////////////
static SRaceLine SRL[5] = { 0 };
static SRaceLine SRL[5] = { { 0 } };
static int SRLinit = 0;
////////////////////////////////////////////////////////////////////////////
@ -45,8 +45,8 @@ static int SRLinit = 0;
//static const int Iterations = 100; // Number of smoothing operations
static const double SecurityR = 100.0; // Security radius
static double SideDistExt = 2.0; // Security distance wrt outside
static double SideDistInt = 1.0; // Security distance wrt inside
//static double SideDistExt = 2.0; // Security distance wrt outside
//static double SideDistInt = 1.0; // Security distance wrt inside
/////////////////////////////////////////////////////////////////////////////
// Some utility macros and functions
@ -865,7 +865,7 @@ void LRaceLine::StepInterpolate(int iMin, int iMax, int Step, int rl)
}
}
static void ClosestPointOnLineFromPoint(
/*static void ClosestPointOnLineFromPoint(
vec2f *lp1, vec2f *lp2,
vec2f *p, vec2f *r )
{
@ -880,7 +880,7 @@ static void ClosestPointOnLineFromPoint(
r->x = lp1->x + ratio * vx;
r->y = lp1->y + ratio * vy;
}
}*/
static double PointDist(vec2f *p1, vec2f *p2)
{
@ -1077,8 +1077,8 @@ void LRaceLine::ComputeSpeed(int rl)
}
int nnext = (i + 5) % Divs;
int next = (i + 1) % Divs;
int prev = (i - 1 + Divs) % Divs;
//int next = (i + 1) % Divs;
//int prev = (i - 1 + Divs) % Divs;
double rInverse = SRL[rl].tRInverse[i];
double rI = fabs(rInverse);
@ -1437,8 +1437,8 @@ void LRaceLine::GetRLSteerPoint( vec2f *rt, double *offset, double time )
dist *= car->_trkPos.seg->radius;
int next = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
dist = 0.0;
double txLast = car->_pos_X;
double tyLast = car->_pos_Y;
//double txLast = car->_pos_X;
//double tyLast = car->_pos_Y;
double Time = deltaTime*3 + MAX(0.0, time);
{
@ -1476,7 +1476,7 @@ void LRaceLine::GetSteerPoint( double lookahead, vec2f *rt, double offset, doubl
int maxcount = int(lookahead / DivLength + 1);
int count = 0;
tTrackSeg *seg = car->_trkPos.seg;
//tTrackSeg *seg = car->_trkPos.seg;
int SegId = car->_trkPos.seg->id;
double dist = 0.0;//car->_trkPos.toStart;
#if 0
@ -1487,8 +1487,8 @@ void LRaceLine::GetSteerPoint( double lookahead, vec2f *rt, double offset, doubl
#endif
int next = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
dist = 0.0;
double txLast = car->_pos_X;
double tyLast = car->_pos_Y;
//double txLast = car->_pos_X;
//double tyLast = car->_pos_Y;
double Time = deltaTime*3 + MAX(0.0, time/2);
double carspeed = Mag(car->_speed_X, car->_speed_Y);
double offlane = (offset > -90 ? ((track->width/2) - offset) / track->width : SRL[SRLidx].tLane[next]);
@ -1587,8 +1587,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (famI > 0.0)
{
double toMid = car->_trkPos.toMiddle + data->speedangle * 20;
double toLeft = car->_trkPos.toLeft - data->speedangle * 20;
double toRight = car->_trkPos.toRight + data->speedangle * 20;
//double toLeft = car->_trkPos.toLeft - data->speedangle * 20;
//double toRight = car->_trkPos.toRight + data->speedangle * 20;
double modfactor = (car->_speed_x / data->avspeed);
modfactor *= modfactor;
@ -1612,12 +1612,12 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
//if (data->collision)
// timefactor *= 1.0 + MAX(0.0, (5.0-data->collision) / 5.0);
double Time = timefactor; // + CornerAccel/80;
double X4 = car->_pos_X + car->_speed_X * 0.5 / 2;
double Y4 = car->_pos_Y + car->_speed_Y * 0.5 / 2;
//double X4 = car->_pos_X + car->_speed_X * 0.5 / 2;
//double Y4 = car->_pos_Y + car->_speed_Y * 0.5 / 2;
double X = car->_pos_X + car->_speed_X * Time / 2;
double Y = car->_pos_Y + car->_speed_Y * Time / 2;
double Xk = car->_pos_X + car->_speed_X * 0.1 / 2;
double Yk = car->_pos_Y + car->_speed_Y * 0.1 / 2;
//double Xk = car->_pos_X + car->_speed_X * 0.1 / 2;
//double Yk = car->_pos_Y + car->_speed_Y * 0.1 / 2;
data->lookahead = 0.0f;
data->aInverse = SRL[LINE_MID].tRInverse[Index];
double divcount = 1.0;
@ -1647,7 +1647,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (data->followdist <= 5.0)
{
int snext = SNext;
//int snext = SNext;
//Next = (Next + int((car->_dimension_x + (5.0 - data->followdist)*1.2) / DivLength)) % Divs;
SNext = (Next + int((car->_dimension_x + (5.0 - data->followdist)*6) / DivLength)) % Divs;
if (car->_accel_x > 0.0 && data->followdist <= 2.0)
@ -1741,7 +1741,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->offset = laneoffset;
//fprintf(stderr,"GetRLData: offset=%.2f Next=%d lane=%.4f Width=%.2f\n",laneoffset,Next,tLane[Next],Width);
double sa = (data->angle > 0.0 ? MIN(data->angle, data->angle+data->speedangle/2) : MAX(data->angle, data->angle+data->speedangle/2));
//double sa = (data->angle > 0.0 ? MIN(data->angle, data->angle+data->speedangle/2) : MAX(data->angle, data->angle+data->speedangle/2));
//CalcAvoidSpeed( Next, data, sa );
#if 1
@ -1826,7 +1826,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
vec2f target;
double carspeed = Mag(car->_speed_X, car->_speed_Y);
double steertime = MIN(MaxSteerTime, MinSteerTime + MAX(0.0, carspeed-20.0)/30.0);
double lane2left = track->width * SRL[SRLidx].tLane[Next];
//double lane2left = track->width * SRL[SRLidx].tLane[Next];
// an idea to implement soon...
//if (car->_accel_x < 0.0)
@ -1846,7 +1846,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (fabs(nextangle) > fabs(data->speedangle))
{
double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
double anglediff = (data->speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
k1999steer += anglediff * (1.0 + MAX(1.0, 1.0 - car->_accel_x/5));
}
@ -1856,8 +1856,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
double dx = SRL[SRLidx].tx[NextNext] - SRL[SRLidx].tx[Prev];
double dy = SRL[SRLidx].ty[NextNext] - SRL[SRLidx].ty[Prev];
double vx = car->_speed_X;
double vy = car->_speed_Y;
//double vx = car->_speed_X;
//double vy = car->_speed_Y;
double dirx = cos(car->_yaw);
double diry = sin(car->_yaw);
double SinAngleError = dx * diry - dy * dirx;
@ -1951,7 +1951,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->NSsteer = lastNksteer = k1999steer;
int Prev = (KIndex + Divs - 1) % Divs;
int PrevPrev = (KIndex + Divs - 5) % Divs;
//int PrevPrev = (KIndex + Divs - 5) % Divs;
int NextNext = (KNext + 1) % Divs;
//
@ -2103,7 +2103,7 @@ double LRaceLine::getAvoidSteer(double offset, LRaceLineData *data)
double steertime = MIN(MaxSteerTime, MinSteerTime + MAX(0.0, carspeed-20.0)/30.0);
if (data->followdist < 5.0)
steertime = MIN(MaxSteerTime*1.1, steertime * 1.0 + (5.0 - data->followdist)/20);
double lane2left = track->width * SRL[SRLidx].tLane[Next];
//double lane2left = track->width * SRL[SRLidx].tLane[Next];
double amI = MIN(0.05, MAX(-0.05, SRL[SRLidx].tRInverse[Next]));
double famI = fabs(amI);
@ -2151,7 +2151,7 @@ double LRaceLine::getAvoidSteer(double offset, LRaceLineData *data)
if (fabs(nextangle) > fabs(data->speedangle))
{
double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
double anglediff = (data->speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
steer += anglediff * (1.0 + MAX(1.0, 1.0 - car->_accel_x/5));
}
@ -2175,7 +2175,7 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
double offlane = ((track->width/2) - offset) / track->width;
double off2lft = track->width/2 - offset;
double off2rgt = track->width - off2lft;
tTrackSeg *seg = car->_trkPos.seg;
//tTrackSeg *seg = car->_trkPos.seg;
int SegId = car->_trkPos.seg->id;
double dist = car->_trkPos.toStart;
if (dist < 0)
@ -2183,7 +2183,7 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
if (car->_trkPos.seg->type != TR_STR)
dist *= car->_trkPos.seg->radius;
int Index = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
double laneoffset = SRL[SRLidx].Width/2 - (SRL[SRLidx].tLane[Index] * SRL[SRLidx].Width);
//double laneoffset = SRL[SRLidx].Width/2 - (SRL[SRLidx].tLane[Index] * SRL[SRLidx].Width);
double rInv = SRL[LINE_MID].tRInverse[Index];
Index = This;
#if 1
@ -2216,8 +2216,8 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
next = (Index + 1) % Divs;
txNext = offlane * SRL[SRLidx].txRight[next] + (1 - offlane) * SRL[SRLidx].txLeft[next];
tyNext = offlane * SRL[SRLidx].tyRight[next] + (1 - offlane) * SRL[SRLidx].tyLeft[next];
double dx = txNext - car->_pos_X;
double dy = tyNext - car->_pos_Y;
//double dx = txNext - car->_pos_X;
//double dy = tyNext - car->_pos_Y;
if ((txNext - txIndex) * (X - txNext) +
(tyNext - tyIndex) * (Y - tyNext) < -0.1)
{
@ -2248,12 +2248,12 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
int LRaceLine::findNextCorner( double *nextCRinverse )
{
tTrackSeg *seg = car->_trkPos.seg;;
//tTrackSeg *seg = car->_trkPos.seg;;
int prefer_side = ((SRL[SRLidx].tRInverse[Next] > 0.001) ? TR_LFT :
((SRL[SRLidx].tRInverse[Next]) < -0.001 ? TR_RGT : TR_STR));
double curlane = car->_trkPos.toLeft / track->width;
int next = (Next+5) % Divs, i = 1, div;
double distance = 0.0;
//double curlane = car->_trkPos.toLeft / track->width;
int /*next = (Next+5) % Divs,*/ i = 1, div;
//double distance = 0.0;
double CR = SRL[SRLidx].tRInverse[Next];
if (car->_speed_x < 5.0)
@ -2297,7 +2297,7 @@ int LRaceLine::findNextCorner( double *nextCRinverse )
double LRaceLine::correctLimit(double avoidsteer, double racesteer)
{
double nlane2left = SRL[SRLidx].tLane[Next] * SRL[SRLidx].Width;
//double nlane2left = SRL[SRLidx].tLane[Next] * SRL[SRLidx].Width;
double tbump = BumpCaution;//GetModD( tBump, This ) * 4;
// correct would take us in the opposite direction to a corner - correct less!
@ -2307,7 +2307,7 @@ double LRaceLine::correctLimit(double avoidsteer, double racesteer)
// correct would take us in the opposite direction to a corner - correct less (but not as much as above)
int nnext = (Next + (int) (car->_speed_x/3)) % Divs;
double nnlane2left = SRL[SRLidx].tLane[nnext] * SRL[SRLidx].Width;
//double nnlane2left = SRL[SRLidx].tLane[nnext] * SRL[SRLidx].Width;
if ((SRL[SRLidx].tRInverse[nnext] > 0.001 && avoidsteer > racesteer) ||
(SRL[SRLidx].tRInverse[nnext] < -0.001 && avoidsteer < racesteer))
return MAX(0.3, MIN(1.0, 1.0 - fabs(SRL[SRLidx].tRInverse[nnext]) * 40.0 - tbump));

View file

@ -35,12 +35,12 @@ SimpleStrategy::SimpleStrategy() :
m_lastfuel(0.0f),
m_expectedfuelperlap(0.0f),
m_fuelsum(0.0f),
PitDamage(5000),
pit_damage(0),
min_damage(0),
is_pitting(0),
remainlaps(0),
pit_reason(0),
PitDamage(5000),
track(NULL)
{
#ifdef SPEED_DREAMS
@ -179,7 +179,7 @@ bool SimpleStrategy::needPitstop(tCarElt* car, tSituation *s, Opponents *opp)
{
// Do we need to refuel?
int remainlaps = car->_remainingLaps;//-car->_lapsBehindLeader;
int this_pit_dammage = PitDamage;
//int this_pit_dammage = PitDamage;
if (!car->_pit)
return false;

View file

@ -37,7 +37,9 @@
#include <robottools.h>
#include <robot.h>
#ifndef SPEED_DREAMS
#define SPEED_DREAMS
#endif //SPEED_DREAMS
#ifdef SPEED_DREAMS
#include <teammanager.h>

View file

@ -47,14 +47,14 @@ static void endRace(int index, tCarElt *car, tSituation *s);
// TORCS-NG-Interface
static const int BUFSIZE = 256; // Buffer size for path/filename buffers
static const int MAXNBBOTS = 20; // Set value to max capacity you want to use here
static char* defaultBotName[MAXNBBOTS] = {
static char const* defaultBotName[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
"driver 16", "driver 17", "driver 18", "driver 19", "driver 20"
};
static char* defaultBotDesc[MAXNBBOTS] = {
static char const* defaultBotDesc[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
@ -96,7 +96,7 @@ void SetUpUSR_36GP()
// Set robots's name and xml file pathname
static void setRobotName(const char *name)
{
char* c;
//char* c;
strcpy(nameBuffer, name);
snprintf(pathBuffer, BUFSIZE, "drivers/%s/%s.xml", name, name);

View file

@ -301,8 +301,8 @@ void Driver::initTrack(tTrack* t, void *carHandle, void **carParmHandle, tSituat
char carName[256];
{
char *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char *key = PRM_CAR;
char const *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char const *key = PRM_CAR;
strncpy( carName, GfParmGetStr(carHandle, path, key, ""), sizeof(carName) );
char *p = strrchr(carName, '.');
if (p) *p = '\0';
@ -587,8 +587,8 @@ void Driver::newRace(tCarElt* car, tSituation *s)
char carName[256];
{
char *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char *key = PRM_CAR;
char const *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char const *key = PRM_CAR;
strncpy( carName, GfParmGetStr(car->_carHandle, path, key, ""), sizeof(carName) );
char *p = strrchr(carName, '.');
if (p) *p = '\0';
@ -1034,7 +1034,7 @@ float Driver::getAccel()
if (pit->getInPit() && car->_brakeCmd == 0.0f)
{
float s = pit->toSplineCoord( car->_distFromStartLine );
//float s = pit->toSplineCoord( car->_distFromStartLine );
#if 0
if (pit->needPitstop())
@ -1376,7 +1376,7 @@ float Driver::getSteer(tSituation *s)
bool yr_ok = (fabs(car->_yaw_rate) < 0.1 || (car->_yaw_rate > rldata->rInverse*100-0.1 && car->_yaw_rate < rldata->rInverse*100+0.1));
bool angle_ok = (angle > rldata->rlangle-0.06 && angle < rldata->rlangle+0.06);
double rlsteer = (fabs(rldata->rInverse) >= 0.004 ? rldata->rInverse * 12 : 0.0);
//double rlsteer = (fabs(rldata->rInverse) >= 0.004 ? rldata->rInverse * 12 : 0.0);
bool steer_ok = (racesteer<laststeer+0.05 && racesteer>laststeer-0.05);
double skid = (car->_skid[0] + car->_skid[1] + car->_skid[2] + car->_skid[3]) / 2;
@ -1543,7 +1543,7 @@ double Driver::calcSteer( double targetAngle, int rl )
if (fabs(nextangle) > fabs(speedangle))
{
// steer into the skid
double sa = MAX(-0.3, MIN(0.3, speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, speedangle/3));
//double anglediff = (sa - angle) * (0.3 + fabs(angle)/6);
double anglediff = (speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
steer += (float) (anglediff*SkidSteer);
@ -1647,7 +1647,7 @@ float Driver::correctSteering( float avoidsteer, float racesteer )
return avoidsteer;
float steer = avoidsteer;
float accel = MIN(0.0f, car->_accel_x);
//float accel = MIN(0.0f, car->_accel_x);
double speed = 50.0; //MAX(50.0, currentspeed);
double changelimit = MIN(raceline->correctLimit(avoidsteer, racesteer), (((120.0-currentspeed)/6000) * (0.1 + fabs(rldata->mInverse/4)))) * SmoothSteer;
@ -2023,7 +2023,7 @@ vec2f Driver::getTargetPoint(bool use_lookahead, double targetoffset)
// all the BT code below is for steering into pits only.
s.x = (seg->vertex[TR_SL].x + seg->vertex[TR_SR].x)/2;
s.y = (seg->vertex[TR_SL].y + seg->vertex[TR_SR].y)/2;
double dx, dy;
//double dx, dy;
vec2f t, rt;
if ( seg->type == TR_STR) {
@ -2059,9 +2059,9 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
if (!o) return false;
#if 1
int segid = car->_trkPos.seg->id;
//int segid = car->_trkPos.seg->id;
tCarElt *ocar = o->getCarPtr();
int osegid = ocar->_trkPos.seg->id;
//int osegid = ocar->_trkPos.seg->id;
double otry_factor = (lenient ? (0.2 + MAX(0.0, 1.0 - ((simtime-frontavoidtime)/7.0)) * 0.8) : 1.0);
double overtakecaution = MAX(0.0, rldata->overtakecaution + (outside ? MIN(0.0, car->_accel_x/8) : 0.0)) - driver_aggression/2;
double orInv=0.0, oAspeed=0.0;
@ -2166,7 +2166,7 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
float Driver::getOffset()
{
int i, avoidmovt = 0;
double catchdist, mincatchdist = MAX(100.0, car->_speed_x * 5), mindist = -1000.0;
double /*catchdist,*/ mincatchdist = MAX(100.0, car->_speed_x * 5), mindist = -1000.0;
Opponent *o = NULL;
double lane2left = rldata->lane * car->_trkPos.seg->width;
double lane2right = car->_trkPos.seg->width-lane2left;
@ -2179,7 +2179,7 @@ float Driver::getOffset()
// Increment speed dependent.
//double incspeed = MIN(40.0, MAX(30.0, currentspeed));
//double incfactor = (MAX_INC_FACTOR*0.5 - MIN(incspeed/10, MAX_INC_FACTOR*0.5-0.5)) * 60 * IncFactor;
double incspeed = MIN(60.0, MAX(40.0, currentspeed)) - 10.0;
//double incspeed = MIN(60.0, MAX(40.0, currentspeed)) - 10.0;
//double incfactor = (MAX_INC_FACTOR - MIN(fabs(incspeed)/MAX_INC_FACTOR, (MAX_INC_FACTOR - 1.0f))) * (10.0f + MAX(0.0, (CA-1.9)*10)) * IncFactor;
double incfactor = (MAX_INC_FACTOR - MIN(40.0/MAX_INC_FACTOR, (MAX_INC_FACTOR - 1.0f))) * (10.0f + MAX(0.0, (CA-1.9)*10)) * IncFactor;
@ -2204,7 +2204,7 @@ float Driver::getOffset()
double moffset = car->_trkPos.toMiddle;
double origoffset = moffset;
//double origoffset = moffset;
double Width = car->_trkPos.seg->width;
#if 1
@ -2235,8 +2235,8 @@ float Driver::getOffset()
{
// reduce amount we deviate from the raceline according to how long we've been avoiding, and also
// how fast we're going.
double dspeed = MAX(0.0, rldata->speed - currentspeed) * 4;
double pspeed = MAX(1.0, 60.0 - (currentspeed - (30.0 + MAX(0.0, car->_accel_x) + dspeed))) / 10;
//double dspeed = MAX(0.0, rldata->speed - currentspeed) * 4;
//double pspeed = MAX(1.0, 60.0 - (currentspeed - (30.0 + MAX(0.0, car->_accel_x) + dspeed))) / 10;
// instead of toMiddle just aiming at where the car currently is, we move it in the direction
// the car's travelling ... but less so if the speedangle is different from the car's angle.
@ -2524,13 +2524,13 @@ fprintf(stderr,"%s -> %s CANCEL 1 (%.1f > %.1f || %.1f < %.1f || %.3f > %.3f)\n"
tCarElt *ocar = o->getCarPtr();
// Compute the width around the middle which we can use for overtaking.
float w = ocar->_trkPos.seg->width/WIDTHDIV-BORDER_OVERTAKE_MARGIN;
//float w = ocar->_trkPos.seg->width/WIDTHDIV-BORDER_OVERTAKE_MARGIN;
// Compute the opponents distance to the middle.
float otm = ocar->_trkPos.toMiddle;
//float otm = ocar->_trkPos.toMiddle;
// Define the with of the middle range.
float wm = ocar->_trkPos.seg->width*CENTERDIV;
//float wm = ocar->_trkPos.seg->width*CENTERDIV;
float sidedist = fabs(car->_trkPos.toMiddle-ocar->_trkPos.toMiddle);
double sdist = (rInverse > 0.0 ? (-sidedist - 3.0) : (sidedist - 3.0));
//double sdist = (rInverse > 0.0 ? (-sidedist - 3.0) : (sidedist - 3.0));
//int avoidingside = (otm > wm && myoffset > -w) ? TR_RGT : ((otm < -wm && myoffset < w) ? TR_LFT : TR_STR);
int avoidingside = (car->_trkPos.toLeft > ocar->_trkPos.toLeft ? TR_LFT : TR_RGT);
@ -2878,7 +2878,7 @@ fprintf(stderr,"%s BEHIND %s (%d %d %d %d)\n",car->_name,ocar->_name,((o->getSta
double factor = 0.25;//(fabs(car->_trkPos.toMiddle) < car->_trkPos.seg->width/2 + 2.0 ? 0.25 : 1.0);
if (fabs(myoffset) > fabs(rldata->offset))
{
double inc = OVERTAKE_OFFSET_INC * MIN(lftinc, rgtinc) * factor;
//double inc = OVERTAKE_OFFSET_INC * MIN(lftinc, rgtinc) * factor;
if (myoffset < rldata->offset && myoffset < 2.0)
myoffset += (float) (MIN(rldata->offset-myoffset, OVERTAKE_OFFSET_INC * rgtinc/3 * factor));
else if (myoffset > rldata->offset && myoffset > 2.0)
@ -3060,7 +3060,7 @@ void Driver::update(tSituation *s)
for (int i=0; i<opponents->getNOpponents(); i++)
{
int idx = opponent[i].getIndex();
//int idx = opponent[i].getIndex();
if (opponent[i].getTeam() != TEAM_FRIEND) continue;
if (opponent[i].getCarPtr() == car) continue;
if (opponent[i].getCarPtr()->_state > RM_CAR_STATE_PIT)
@ -3449,7 +3449,7 @@ void Driver::initWheelPos()
{
for (int i=0; i<4; i++)
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float rh = 0.0;
rh = GfParmGetNum(car->_carHandle,WheelSect[i],PRM_RIDEHEIGHT,(char *)NULL, 0.10f);
wheelz[i] = (-rh / 1.0 + car->info.wheel[i].wheelRadius) - 0.01;
@ -3458,7 +3458,7 @@ void Driver::initWheelPos()
void Driver::initCa()
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float rearwingarea = GfParmGetNum(car->_carHandle, SECT_REARWING, PRM_WINGAREA, (char*) NULL, 0.0f);
float rearwingangle = GfParmGetNum(car->_carHandle, SECT_REARWING, PRM_WINGANGLE, (char*) NULL, 0.0f);
float wingca = 1.23f*rearwingarea*sin(rearwingangle);
@ -3486,7 +3486,7 @@ void Driver::initCw()
// Init the friction coefficient of the the tires.
void Driver::initTireMu()
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float tm = FLT_MAX;
int i;
@ -3616,7 +3616,7 @@ float Driver::filterABS(float brake)
{
if (car->_speed_x < ABS_MINSPEED) return brake;
float origbrake = brake;
float rearskid = MAX(0.0f, MAX(car->_skid[2], car->_skid[3]) - MAX(car->_skid[0], car->_skid[1]));
//float rearskid = MAX(0.0f, MAX(car->_skid[2], car->_skid[3]) - MAX(car->_skid[0], car->_skid[1]));
int i;
float slip = 0.0f;
for (i = 0; i < 4; i++) {

View file

@ -214,15 +214,15 @@ fprintf(stderr," FRONTSLOW\n");
double max = MAX(lane, MAX(mycar->_trkPos.seg->width-mycar->_dimension_y/2, driver->getNextLeft()));
double min = MIN(lane, MIN(mycar->_dimension_y/2, driver->getNextLeft()));
//double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(driver->getNextLeft()-mycar->_trkPos.toLeft) * (t_impact*deltamult)))) - driver->getAngle();
double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(t_impact*driver->getSpeedAngle())) + driver->getAngle()));
//double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(t_impact*driver->getSpeedAngle())) + driver->getAngle()));
max = MAX(nextleft, car->_trkPos.seg->width-car->_dimension_y/2);
min = MIN(nextleft, car->_dimension_y/2);
//double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(nextleft-car->_trkPos.toLeft) * (t_impact*deltamult)))) - angle;
double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(t_impact*speedangle)) + angle));
//double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(t_impact*speedangle)) + angle));
//double sepdist = fabs(mleft - oleft);
double sepdist = fabs(car->_trkPos.toLeft - mycar->_trkPos.toLeft) + driver->getAngle()*2;
int diverging = 0; //(sepdist > (fabs(getWidth()/2.0f) + mycar->_dimension_y/3.0f) + 0.3);
//int diverging = 0; //(sepdist > (fabs(getWidth()/2.0f) + mycar->_dimension_y/3.0f) + 0.3);
//t_impact = MIN(mspeed/7, t_impact);
@ -234,7 +234,7 @@ fprintf(stderr," FRONTSLOW\n");
float cardist = car->_trkPos.toMiddle - mycar->_trkPos.toMiddle;
sidedist = cardist;
cardist = sepdist - fabs(getWidth()/2.0f) - mycar->_dimension_y/2.0f;
double deduction = t_impact / MAX(1.0, distance);
//double deduction = t_impact / MAX(1.0, distance);
if (cardist < SIDE_MARGIN) {
if (DebugMsg & debug_brake)
fprintf(stderr,"FRONTCOLLIDE %s cardist=%.3f sepdist=%.3f\n",car->_name,cardist,sepdist);
@ -394,7 +394,7 @@ fprintf(stderr," FRONTFAST\n");
if (team == TEAM_FRIEND && car->_dammage-1000 < mycar->_dammage)
state |= OPP_FRONT_FOLLOW;
double dSpeed = mspeed;//driver->getSpeed();
//double dSpeed = mspeed;//driver->getSpeed();
//if (distance < 20.0 - (getSpeed()-driver->getSpeed())*4)
if (distance < 20.0 - (ospeed-mspeed)*4)
state |= OPP_FRONT;
@ -527,15 +527,15 @@ int Opponent::polyOverlap( tPosd *op, tPosd *dp )
int Opponent::testCollision(Driver *driver, double impact, double sizefactor, vec2f *targ )
{
tCarElt *mycar = driver->getCarPtr();
int collide = 0, i, j;
double nSlices = MAX(1.0, (impact * deltamult));
int /*collide = 0,*/ i/*, j*/;
//double nSlices = MAX(1.0, (impact * deltamult));
tCarElt *dcar = driver->getCarPtr();
double o_speedX = car->_speed_X;// + (cardata->getSpeedDeltaX()) * (impact * deltamult) / 2;
double o_speedY = car->_speed_Y;// + (cardata->getSpeedDeltaY()) * (impact * deltamult) / 2;
double d_speedX = dcar->_speed_X;// + driver->getSpeedDeltaX() * (impact * deltamult) / 2;
double d_speedY = dcar->_speed_Y;// + driver->getSpeedDeltaY() * (impact * deltamult) / 2;
tPosd o_cur[4], d_cur[4], o_curp[4], d_curp[4], o_new[4], d_new[4], o_new2[4], d_new2[4];
tPosd o_cur[4], d_cur[4], /*o_curp[4], d_curp[4],*/ o_new[4], d_new[4], o_new2[4], d_new2[4];
// set up car current positions
for (i=0; i<4; i++)
@ -558,8 +558,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
else
{
// position driver's car according to velocity angle
double d_newPos_x = dcar->pub.DynGC.pos.x + (d_speedX*impact);
double d_newPos_y = dcar->pub.DynGC.pos.y + (d_speedY*impact);
//double d_newPos_x = dcar->pub.DynGC.pos.x + (d_speedX*impact);
//double d_newPos_y = dcar->pub.DynGC.pos.y + (d_speedY*impact);
// correct corner positions
for (i=0; i<4; i++)
@ -572,8 +572,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
#if 1
{
// position opponent car according to velocity angle
double o_newPos_x = car->pub.DynGC.pos.x + (o_speedX*impact);
double o_newPos_y = car->pub.DynGC.pos.y + (o_speedY*impact);
//double o_newPos_x = car->pub.DynGC.pos.x + (o_speedX*impact);
//double o_newPos_y = car->pub.DynGC.pos.y + (o_speedY*impact);
// correct corner positions
for (i=0; i<4; i++)
@ -698,8 +698,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
double ti = MAX(0.001, impact) + 0.1;
tPosd *o_old1 = cardata->getCorner1();
tPosd *d_old1 = driver->getCorner1();
tPosd *o_old2 = cardata->getCorner2();
tPosd *d_old2 = driver->getCorner2();
//tPosd *o_old2 = cardata->getCorner2();
//tPosd *d_old2 = driver->getCorner2();
for (i=0; i<4; i++)
{

View file

@ -32,7 +32,7 @@
// Structures and Statics
////////////////////////////////////////////////////////////////////////////
static SRaceLine SRL[5] = { 0 };
static SRaceLine SRL[5] = { { 0 } };
static int SRLinit = 0;
////////////////////////////////////////////////////////////////////////////
@ -45,8 +45,8 @@ static int SRLinit = 0;
//static const int Iterations = 100; // Number of smoothing operations
static const double SecurityR = 100.0; // Security radius
static double SideDistExt = 2.0; // Security distance wrt outside
static double SideDistInt = 1.0; // Security distance wrt inside
//static double SideDistExt = 2.0; // Security distance wrt outside
//static double SideDistInt = 1.0; // Security distance wrt inside
/////////////////////////////////////////////////////////////////////////////
// Some utility macros and functions
@ -865,7 +865,7 @@ void LRaceLine::StepInterpolate(int iMin, int iMax, int Step, int rl)
}
}
static void ClosestPointOnLineFromPoint(
/*static void ClosestPointOnLineFromPoint(
vec2f *lp1, vec2f *lp2,
vec2f *p, vec2f *r )
{
@ -880,7 +880,7 @@ static void ClosestPointOnLineFromPoint(
r->x = lp1->x + ratio * vx;
r->y = lp1->y + ratio * vy;
}
}*/
static double PointDist(vec2f *p1, vec2f *p2)
{
@ -1077,8 +1077,8 @@ void LRaceLine::ComputeSpeed(int rl)
}
int nnext = (i + 5) % Divs;
int next = (i + 1) % Divs;
int prev = (i - 1 + Divs) % Divs;
//int next = (i + 1) % Divs;
//int prev = (i - 1 + Divs) % Divs;
double rInverse = SRL[rl].tRInverse[i];
double rI = fabs(rInverse);
@ -1437,8 +1437,8 @@ void LRaceLine::GetRLSteerPoint( vec2f *rt, double *offset, double time )
dist *= car->_trkPos.seg->radius;
int next = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
dist = 0.0;
double txLast = car->_pos_X;
double tyLast = car->_pos_Y;
//double txLast = car->_pos_X;
//double tyLast = car->_pos_Y;
double Time = deltaTime*3 + MAX(0.0, time);
{
@ -1476,7 +1476,7 @@ void LRaceLine::GetSteerPoint( double lookahead, vec2f *rt, double offset, doubl
int maxcount = int(lookahead / DivLength + 1);
int count = 0;
tTrackSeg *seg = car->_trkPos.seg;
//tTrackSeg *seg = car->_trkPos.seg;
int SegId = car->_trkPos.seg->id;
double dist = 0.0;//car->_trkPos.toStart;
#if 0
@ -1487,8 +1487,8 @@ void LRaceLine::GetSteerPoint( double lookahead, vec2f *rt, double offset, doubl
#endif
int next = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
dist = 0.0;
double txLast = car->_pos_X;
double tyLast = car->_pos_Y;
//double txLast = car->_pos_X;
//double tyLast = car->_pos_Y;
double Time = deltaTime*3 + MAX(0.0, time/2);
double carspeed = Mag(car->_speed_X, car->_speed_Y);
double offlane = (offset > -90 ? ((track->width/2) - offset) / track->width : SRL[SRLidx].tLane[next]);
@ -1587,8 +1587,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (famI > 0.0)
{
double toMid = car->_trkPos.toMiddle + data->speedangle * 20;
double toLeft = car->_trkPos.toLeft - data->speedangle * 20;
double toRight = car->_trkPos.toRight + data->speedangle * 20;
//double toLeft = car->_trkPos.toLeft - data->speedangle * 20;
//double toRight = car->_trkPos.toRight + data->speedangle * 20;
double modfactor = (car->_speed_x / data->avspeed);
modfactor *= modfactor;
@ -1612,12 +1612,12 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
//if (data->collision)
// timefactor *= 1.0 + MAX(0.0, (5.0-data->collision) / 5.0);
double Time = timefactor; // + CornerAccel/80;
double X4 = car->_pos_X + car->_speed_X * 0.5 / 2;
double Y4 = car->_pos_Y + car->_speed_Y * 0.5 / 2;
//double X4 = car->_pos_X + car->_speed_X * 0.5 / 2;
//double Y4 = car->_pos_Y + car->_speed_Y * 0.5 / 2;
double X = car->_pos_X + car->_speed_X * Time / 2;
double Y = car->_pos_Y + car->_speed_Y * Time / 2;
double Xk = car->_pos_X + car->_speed_X * 0.1 / 2;
double Yk = car->_pos_Y + car->_speed_Y * 0.1 / 2;
//double Xk = car->_pos_X + car->_speed_X * 0.1 / 2;
//double Yk = car->_pos_Y + car->_speed_Y * 0.1 / 2;
data->lookahead = 0.0f;
data->aInverse = SRL[LINE_MID].tRInverse[Index];
double divcount = 1.0;
@ -1647,7 +1647,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (data->followdist <= 5.0)
{
int snext = SNext;
//int snext = SNext;
//Next = (Next + int((car->_dimension_x + (5.0 - data->followdist)*1.2) / DivLength)) % Divs;
SNext = (Next + int((car->_dimension_x + (5.0 - data->followdist)*6) / DivLength)) % Divs;
if (car->_accel_x > 0.0 && data->followdist <= 2.0)
@ -1741,7 +1741,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->offset = laneoffset;
//fprintf(stderr,"GetRLData: offset=%.2f Next=%d lane=%.4f Width=%.2f\n",laneoffset,Next,tLane[Next],Width);
double sa = (data->angle > 0.0 ? MIN(data->angle, data->angle+data->speedangle/2) : MAX(data->angle, data->angle+data->speedangle/2));
//double sa = (data->angle > 0.0 ? MIN(data->angle, data->angle+data->speedangle/2) : MAX(data->angle, data->angle+data->speedangle/2));
//CalcAvoidSpeed( Next, data, sa );
#if 1
@ -1826,7 +1826,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
vec2f target;
double carspeed = Mag(car->_speed_X, car->_speed_Y);
double steertime = MIN(MaxSteerTime, MinSteerTime + MAX(0.0, carspeed-20.0)/30.0);
double lane2left = track->width * SRL[SRLidx].tLane[Next];
//double lane2left = track->width * SRL[SRLidx].tLane[Next];
// an idea to implement soon...
//if (car->_accel_x < 0.0)
@ -1846,7 +1846,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (fabs(nextangle) > fabs(data->speedangle))
{
double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
double anglediff = (data->speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
k1999steer += anglediff * (1.0 + MAX(1.0, 1.0 - car->_accel_x/5));
}
@ -1856,8 +1856,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
double dx = SRL[SRLidx].tx[NextNext] - SRL[SRLidx].tx[Prev];
double dy = SRL[SRLidx].ty[NextNext] - SRL[SRLidx].ty[Prev];
double vx = car->_speed_X;
double vy = car->_speed_Y;
//double vx = car->_speed_X;
//double vy = car->_speed_Y;
double dirx = cos(car->_yaw);
double diry = sin(car->_yaw);
double SinAngleError = dx * diry - dy * dirx;
@ -1951,7 +1951,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->NSsteer = lastNksteer = k1999steer;
int Prev = (KIndex + Divs - 1) % Divs;
int PrevPrev = (KIndex + Divs - 5) % Divs;
//int PrevPrev = (KIndex + Divs - 5) % Divs;
int NextNext = (KNext + 1) % Divs;
//
@ -2103,7 +2103,7 @@ double LRaceLine::getAvoidSteer(double offset, LRaceLineData *data)
double steertime = MIN(MaxSteerTime, MinSteerTime + MAX(0.0, carspeed-20.0)/30.0);
if (data->followdist < 5.0)
steertime = MIN(MaxSteerTime*1.1, steertime * 1.0 + (5.0 - data->followdist)/20);
double lane2left = track->width * SRL[SRLidx].tLane[Next];
//double lane2left = track->width * SRL[SRLidx].tLane[Next];
double amI = MIN(0.05, MAX(-0.05, SRL[SRLidx].tRInverse[Next]));
double famI = fabs(amI);
@ -2151,7 +2151,7 @@ double LRaceLine::getAvoidSteer(double offset, LRaceLineData *data)
if (fabs(nextangle) > fabs(data->speedangle))
{
double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
double anglediff = (data->speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
steer += anglediff * (1.0 + MAX(1.0, 1.0 - car->_accel_x/5));
}
@ -2175,7 +2175,7 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
double offlane = ((track->width/2) - offset) / track->width;
double off2lft = track->width/2 - offset;
double off2rgt = track->width - off2lft;
tTrackSeg *seg = car->_trkPos.seg;
//tTrackSeg *seg = car->_trkPos.seg;
int SegId = car->_trkPos.seg->id;
double dist = car->_trkPos.toStart;
if (dist < 0)
@ -2183,7 +2183,7 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
if (car->_trkPos.seg->type != TR_STR)
dist *= car->_trkPos.seg->radius;
int Index = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
double laneoffset = SRL[SRLidx].Width/2 - (SRL[SRLidx].tLane[Index] * SRL[SRLidx].Width);
//double laneoffset = SRL[SRLidx].Width/2 - (SRL[SRLidx].tLane[Index] * SRL[SRLidx].Width);
double rInv = SRL[LINE_MID].tRInverse[Index];
Index = This;
#if 1
@ -2216,8 +2216,8 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
next = (Index + 1) % Divs;
txNext = offlane * SRL[SRLidx].txRight[next] + (1 - offlane) * SRL[SRLidx].txLeft[next];
tyNext = offlane * SRL[SRLidx].tyRight[next] + (1 - offlane) * SRL[SRLidx].tyLeft[next];
double dx = txNext - car->_pos_X;
double dy = tyNext - car->_pos_Y;
//double dx = txNext - car->_pos_X;
//double dy = tyNext - car->_pos_Y;
if ((txNext - txIndex) * (X - txNext) +
(tyNext - tyIndex) * (Y - tyNext) < -0.1)
{
@ -2248,12 +2248,12 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
int LRaceLine::findNextCorner( double *nextCRinverse )
{
tTrackSeg *seg = car->_trkPos.seg;;
//tTrackSeg *seg = car->_trkPos.seg;;
int prefer_side = ((SRL[SRLidx].tRInverse[Next] > 0.001) ? TR_LFT :
((SRL[SRLidx].tRInverse[Next]) < -0.001 ? TR_RGT : TR_STR));
double curlane = car->_trkPos.toLeft / track->width;
int next = (Next+5) % Divs, i = 1, div;
double distance = 0.0;
//double curlane = car->_trkPos.toLeft / track->width;
int /*next = (Next+5) % Divs,*/ i = 1, div;
//double distance = 0.0;
double CR = SRL[SRLidx].tRInverse[Next];
if (car->_speed_x < 5.0)
@ -2297,7 +2297,7 @@ int LRaceLine::findNextCorner( double *nextCRinverse )
double LRaceLine::correctLimit(double avoidsteer, double racesteer)
{
double nlane2left = SRL[SRLidx].tLane[Next] * SRL[SRLidx].Width;
//double nlane2left = SRL[SRLidx].tLane[Next] * SRL[SRLidx].Width;
double tbump = BumpCaution;//GetModD( tBump, This ) * 4;
// correct would take us in the opposite direction to a corner - correct less!
@ -2307,7 +2307,7 @@ double LRaceLine::correctLimit(double avoidsteer, double racesteer)
// correct would take us in the opposite direction to a corner - correct less (but not as much as above)
int nnext = (Next + (int) (car->_speed_x/3)) % Divs;
double nnlane2left = SRL[SRLidx].tLane[nnext] * SRL[SRLidx].Width;
//double nnlane2left = SRL[SRLidx].tLane[nnext] * SRL[SRLidx].Width;
if ((SRL[SRLidx].tRInverse[nnext] > 0.001 && avoidsteer > racesteer) ||
(SRL[SRLidx].tRInverse[nnext] < -0.001 && avoidsteer < racesteer))
return MAX(0.3, MIN(1.0, 1.0 - fabs(SRL[SRLidx].tRInverse[nnext]) * 40.0 - tbump));

View file

@ -35,12 +35,12 @@ SimpleStrategy::SimpleStrategy() :
m_lastfuel(0.0f),
m_expectedfuelperlap(0.0f),
m_fuelsum(0.0f),
PitDamage(5000),
pit_damage(0),
min_damage(0),
is_pitting(0),
remainlaps(0),
pit_reason(0),
PitDamage(5000),
track(NULL)
{
#ifdef SPEED_DREAMS
@ -178,7 +178,7 @@ bool SimpleStrategy::needPitstop(tCarElt* car, tSituation *s, Opponents *opp)
{
// Do we need to refuel?
int remainlaps = car->_remainingLaps;//-car->_lapsBehindLeader;
int this_pit_dammage = PitDamage;
//int this_pit_dammage = PitDamage;
if (!car->_pit)
return false;

View file

@ -37,7 +37,9 @@
#include <robottools.h>
#include <robot.h>
#ifndef SPEED_DREAMS
#define SPEED_DREAMS
#endif //SPEED_DREAMS
#ifdef SPEED_DREAMS
#include <teammanager.h>

View file

@ -47,14 +47,14 @@ static void endRace(int index, tCarElt *car, tSituation *s);
// TORCS-NG-Interface
static const int BUFSIZE = 256; // Buffer size for path/filename buffers
static const int MAXNBBOTS = 20; // Set value to max capacity you want to use here
static char* defaultBotName[MAXNBBOTS] = {
static char const* defaultBotName[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
"driver 16", "driver 17", "driver 18", "driver 19", "driver 20"
};
static char* defaultBotDesc[MAXNBBOTS] = {
static char const* defaultBotDesc[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
@ -96,7 +96,7 @@ void SetUpUSR_sc()
// Set robots's name and xml file pathname
static void setRobotName(const char *name)
{
char* c;
//char* c;
strcpy(nameBuffer, name);
snprintf(pathBuffer, BUFSIZE, "drivers/%s/%s.xml", name, name);

View file

@ -301,8 +301,8 @@ void Driver::initTrack(tTrack* t, void *carHandle, void **carParmHandle, tSituat
char carName[256];
{
char *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char *key = PRM_CAR;
char const *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char const *key = PRM_CAR;
strncpy( carName, GfParmGetStr(carHandle, path, key, ""), sizeof(carName) );
char *p = strrchr(carName, '.');
if (p) *p = '\0';
@ -587,8 +587,8 @@ void Driver::newRace(tCarElt* car, tSituation *s)
char carName[256];
{
char *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char *key = PRM_CAR;
char const *path = SECT_GROBJECTS "/" LST_RANGES "/" "1";
char const *key = PRM_CAR;
strncpy( carName, GfParmGetStr(car->_carHandle, path, key, ""), sizeof(carName) );
char *p = strrchr(carName, '.');
if (p) *p = '\0';
@ -1034,7 +1034,7 @@ float Driver::getAccel()
if (pit->getInPit() && car->_brakeCmd == 0.0f)
{
float s = pit->toSplineCoord( car->_distFromStartLine );
//float s = pit->toSplineCoord( car->_distFromStartLine );
#if 0
if (pit->needPitstop())
@ -1376,7 +1376,7 @@ float Driver::getSteer(tSituation *s)
bool yr_ok = (fabs(car->_yaw_rate) < 0.1 || (car->_yaw_rate > rldata->rInverse*100-0.1 && car->_yaw_rate < rldata->rInverse*100+0.1));
bool angle_ok = (angle > rldata->rlangle-0.06 && angle < rldata->rlangle+0.06);
double rlsteer = (fabs(rldata->rInverse) >= 0.004 ? rldata->rInverse * 12 : 0.0);
//double rlsteer = (fabs(rldata->rInverse) >= 0.004 ? rldata->rInverse * 12 : 0.0);
bool steer_ok = (racesteer<laststeer+0.05 && racesteer>laststeer-0.05);
double skid = (car->_skid[0] + car->_skid[1] + car->_skid[2] + car->_skid[3]) / 2;
@ -1543,7 +1543,7 @@ double Driver::calcSteer( double targetAngle, int rl )
if (fabs(nextangle) > fabs(speedangle))
{
// steer into the skid
double sa = MAX(-0.3, MIN(0.3, speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, speedangle/3));
//double anglediff = (sa - angle) * (0.3 + fabs(angle)/6);
double anglediff = (speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
steer += (float) (anglediff*SkidSteer);
@ -1647,7 +1647,7 @@ float Driver::correctSteering( float avoidsteer, float racesteer )
return avoidsteer;
float steer = avoidsteer;
float accel = MIN(0.0f, car->_accel_x);
//float accel = MIN(0.0f, car->_accel_x);
double speed = 50.0; //MAX(50.0, currentspeed);
double changelimit = MIN(raceline->correctLimit(avoidsteer, racesteer), (((120.0-currentspeed)/6000) * (0.1 + fabs(rldata->mInverse/4)))) * SmoothSteer;
@ -2023,7 +2023,7 @@ vec2f Driver::getTargetPoint(bool use_lookahead, double targetoffset)
// all the BT code below is for steering into pits only.
s.x = (seg->vertex[TR_SL].x + seg->vertex[TR_SR].x)/2;
s.y = (seg->vertex[TR_SL].y + seg->vertex[TR_SR].y)/2;
double dx, dy;
//double dx, dy;
vec2f t, rt;
if ( seg->type == TR_STR) {
@ -2059,9 +2059,9 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
if (!o) return false;
#if 1
int segid = car->_trkPos.seg->id;
//int segid = car->_trkPos.seg->id;
tCarElt *ocar = o->getCarPtr();
int osegid = ocar->_trkPos.seg->id;
//int osegid = ocar->_trkPos.seg->id;
double otry_factor = (lenient ? (0.2 + MAX(0.0, 1.0 - ((simtime-frontavoidtime)/7.0)) * 0.8) : 1.0);
double overtakecaution = MAX(0.0, rldata->overtakecaution + (outside ? MIN(0.0, car->_accel_x/8) : 0.0)) - driver_aggression/2;
double orInv=0.0, oAspeed=0.0;
@ -2166,7 +2166,7 @@ bool Driver::canOvertake( Opponent *o, double *mincatchdist, bool outside, bool
float Driver::getOffset()
{
int i, avoidmovt = 0;
double catchdist, mincatchdist = MAX(100.0, car->_speed_x * 5), mindist = -1000.0;
double /*catchdist,*/ mincatchdist = MAX(100.0, car->_speed_x * 5), mindist = -1000.0;
Opponent *o = NULL;
double lane2left = rldata->lane * car->_trkPos.seg->width;
double lane2right = car->_trkPos.seg->width-lane2left;
@ -2179,7 +2179,7 @@ float Driver::getOffset()
// Increment speed dependent.
//double incspeed = MIN(40.0, MAX(30.0, currentspeed));
//double incfactor = (MAX_INC_FACTOR*0.5 - MIN(incspeed/10, MAX_INC_FACTOR*0.5-0.5)) * 60 * IncFactor;
double incspeed = MIN(60.0, MAX(40.0, currentspeed)) - 10.0;
//double incspeed = MIN(60.0, MAX(40.0, currentspeed)) - 10.0;
//double incfactor = (MAX_INC_FACTOR - MIN(fabs(incspeed)/MAX_INC_FACTOR, (MAX_INC_FACTOR - 1.0f))) * (10.0f + MAX(0.0, (CA-1.9)*10)) * IncFactor;
double incfactor = (MAX_INC_FACTOR - MIN(40.0/MAX_INC_FACTOR, (MAX_INC_FACTOR - 1.0f))) * (10.0f + MAX(0.0, (CA-1.9)*10)) * IncFactor;
@ -2204,7 +2204,7 @@ float Driver::getOffset()
double moffset = car->_trkPos.toMiddle;
double origoffset = moffset;
//double origoffset = moffset;
double Width = car->_trkPos.seg->width;
#if 1
@ -2235,8 +2235,8 @@ float Driver::getOffset()
{
// reduce amount we deviate from the raceline according to how long we've been avoiding, and also
// how fast we're going.
double dspeed = MAX(0.0, rldata->speed - currentspeed) * 4;
double pspeed = MAX(1.0, 60.0 - (currentspeed - (30.0 + MAX(0.0, car->_accel_x) + dspeed))) / 10;
//double dspeed = MAX(0.0, rldata->speed - currentspeed) * 4;
//double pspeed = MAX(1.0, 60.0 - (currentspeed - (30.0 + MAX(0.0, car->_accel_x) + dspeed))) / 10;
// instead of toMiddle just aiming at where the car currently is, we move it in the direction
// the car's travelling ... but less so if the speedangle is different from the car's angle.
@ -2524,13 +2524,13 @@ fprintf(stderr,"%s -> %s CANCEL 1 (%.1f > %.1f || %.1f < %.1f || %.3f > %.3f)\n"
tCarElt *ocar = o->getCarPtr();
// Compute the width around the middle which we can use for overtaking.
float w = ocar->_trkPos.seg->width/WIDTHDIV-BORDER_OVERTAKE_MARGIN;
//float w = ocar->_trkPos.seg->width/WIDTHDIV-BORDER_OVERTAKE_MARGIN;
// Compute the opponents distance to the middle.
float otm = ocar->_trkPos.toMiddle;
//float otm = ocar->_trkPos.toMiddle;
// Define the with of the middle range.
float wm = ocar->_trkPos.seg->width*CENTERDIV;
//float wm = ocar->_trkPos.seg->width*CENTERDIV;
float sidedist = fabs(car->_trkPos.toMiddle-ocar->_trkPos.toMiddle);
double sdist = (rInverse > 0.0 ? (-sidedist - 3.0) : (sidedist - 3.0));
//double sdist = (rInverse > 0.0 ? (-sidedist - 3.0) : (sidedist - 3.0));
//int avoidingside = (otm > wm && myoffset > -w) ? TR_RGT : ((otm < -wm && myoffset < w) ? TR_LFT : TR_STR);
int avoidingside = (car->_trkPos.toLeft > ocar->_trkPos.toLeft ? TR_LFT : TR_RGT);
@ -2878,7 +2878,7 @@ fprintf(stderr,"%s BEHIND %s (%d %d %d %d)\n",car->_name,ocar->_name,((o->getSta
double factor = 0.25;//(fabs(car->_trkPos.toMiddle) < car->_trkPos.seg->width/2 + 2.0 ? 0.25 : 1.0);
if (fabs(myoffset) > fabs(rldata->offset))
{
double inc = OVERTAKE_OFFSET_INC * MIN(lftinc, rgtinc) * factor;
//double inc = OVERTAKE_OFFSET_INC * MIN(lftinc, rgtinc) * factor;
if (myoffset < rldata->offset && myoffset < 2.0)
myoffset += (float) (MIN(rldata->offset-myoffset, OVERTAKE_OFFSET_INC * rgtinc/3 * factor));
else if (myoffset > rldata->offset && myoffset > 2.0)
@ -3060,7 +3060,7 @@ void Driver::update(tSituation *s)
for (int i=0; i<opponents->getNOpponents(); i++)
{
int idx = opponent[i].getIndex();
//int idx = opponent[i].getIndex();
if (opponent[i].getTeam() != TEAM_FRIEND) continue;
if (opponent[i].getCarPtr() == car) continue;
if (opponent[i].getCarPtr()->_state > RM_CAR_STATE_PIT)
@ -3449,7 +3449,7 @@ void Driver::initWheelPos()
{
for (int i=0; i<4; i++)
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float rh = 0.0;
rh = GfParmGetNum(car->_carHandle,WheelSect[i],PRM_RIDEHEIGHT,(char *)NULL, 0.10f);
wheelz[i] = (-rh / 1.0 + car->info.wheel[i].wheelRadius) - 0.01;
@ -3458,7 +3458,7 @@ void Driver::initWheelPos()
void Driver::initCa()
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float rearwingarea = GfParmGetNum(car->_carHandle, SECT_REARWING, PRM_WINGAREA, (char*) NULL, 0.0f);
float rearwingangle = GfParmGetNum(car->_carHandle, SECT_REARWING, PRM_WINGANGLE, (char*) NULL, 0.0f);
float wingca = 1.23f*rearwingarea*sin(rearwingangle);
@ -3486,7 +3486,7 @@ void Driver::initCw()
// Init the friction coefficient of the the tires.
void Driver::initTireMu()
{
char *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
char const *WheelSect[4] = {SECT_FRNTRGTWHEEL, SECT_FRNTLFTWHEEL, SECT_REARRGTWHEEL, SECT_REARLFTWHEEL};
float tm = FLT_MAX;
int i;
@ -3616,7 +3616,7 @@ float Driver::filterABS(float brake)
{
if (car->_speed_x < ABS_MINSPEED) return brake;
float origbrake = brake;
float rearskid = MAX(0.0f, MAX(car->_skid[2], car->_skid[3]) - MAX(car->_skid[0], car->_skid[1]));
//float rearskid = MAX(0.0f, MAX(car->_skid[2], car->_skid[3]) - MAX(car->_skid[0], car->_skid[1]));
int i;
float slip = 0.0f;
for (i = 0; i < 4; i++) {

View file

@ -214,15 +214,15 @@ fprintf(stderr," FRONTSLOW\n");
double max = MAX(lane, MAX(mycar->_trkPos.seg->width-mycar->_dimension_y/2, driver->getNextLeft()));
double min = MIN(lane, MIN(mycar->_dimension_y/2, driver->getNextLeft()));
//double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(driver->getNextLeft()-mycar->_trkPos.toLeft) * (t_impact*deltamult)))) - driver->getAngle();
double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(t_impact*driver->getSpeedAngle())) + driver->getAngle()));
//double mleft = MIN(max, MAX(min, (mycar->_trkPos.toLeft+(t_impact*driver->getSpeedAngle())) + driver->getAngle()));
max = MAX(nextleft, car->_trkPos.seg->width-car->_dimension_y/2);
min = MIN(nextleft, car->_dimension_y/2);
//double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(nextleft-car->_trkPos.toLeft) * (t_impact*deltamult)))) - angle;
double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(t_impact*speedangle)) + angle));
//double oleft = MIN(max, MAX(min, (car->_trkPos.toLeft+(t_impact*speedangle)) + angle));
//double sepdist = fabs(mleft - oleft);
double sepdist = fabs(car->_trkPos.toLeft - mycar->_trkPos.toLeft) + driver->getAngle()*2;
int diverging = 0; //(sepdist > (fabs(getWidth()/2.0f) + mycar->_dimension_y/3.0f) + 0.3);
//int diverging = 0; //(sepdist > (fabs(getWidth()/2.0f) + mycar->_dimension_y/3.0f) + 0.3);
//t_impact = MIN(mspeed/7, t_impact);
@ -234,7 +234,7 @@ fprintf(stderr," FRONTSLOW\n");
float cardist = car->_trkPos.toMiddle - mycar->_trkPos.toMiddle;
sidedist = cardist;
cardist = sepdist - fabs(getWidth()/2.0f) - mycar->_dimension_y/2.0f;
double deduction = t_impact / MAX(1.0, distance);
//double deduction = t_impact / MAX(1.0, distance);
if (cardist < SIDE_MARGIN) {
if (DebugMsg & debug_brake)
fprintf(stderr,"FRONTCOLLIDE %s cardist=%.3f sepdist=%.3f\n",car->_name,cardist,sepdist);
@ -394,7 +394,7 @@ fprintf(stderr," FRONTFAST\n");
if (team == TEAM_FRIEND && car->_dammage-1000 < mycar->_dammage)
state |= OPP_FRONT_FOLLOW;
double dSpeed = mspeed;//driver->getSpeed();
//double dSpeed = mspeed;//driver->getSpeed();
//if (distance < 20.0 - (getSpeed()-driver->getSpeed())*4)
if (distance < 20.0 - (ospeed-mspeed)*4)
state |= OPP_FRONT;
@ -527,15 +527,15 @@ int Opponent::polyOverlap( tPosd *op, tPosd *dp )
int Opponent::testCollision(Driver *driver, double impact, double sizefactor, vec2f *targ )
{
tCarElt *mycar = driver->getCarPtr();
int collide = 0, i, j;
double nSlices = MAX(1.0, (impact * deltamult));
int /*collide = 0,*/ i/*, j*/;
//double nSlices = MAX(1.0, (impact * deltamult));
tCarElt *dcar = driver->getCarPtr();
double o_speedX = car->_speed_X;// + (cardata->getSpeedDeltaX()) * (impact * deltamult) / 2;
double o_speedY = car->_speed_Y;// + (cardata->getSpeedDeltaY()) * (impact * deltamult) / 2;
double d_speedX = dcar->_speed_X;// + driver->getSpeedDeltaX() * (impact * deltamult) / 2;
double d_speedY = dcar->_speed_Y;// + driver->getSpeedDeltaY() * (impact * deltamult) / 2;
tPosd o_cur[4], d_cur[4], o_curp[4], d_curp[4], o_new[4], d_new[4], o_new2[4], d_new2[4];
tPosd o_cur[4], d_cur[4], /*o_curp[4], d_curp[4],*/ o_new[4], d_new[4], o_new2[4], d_new2[4];
// set up car current positions
for (i=0; i<4; i++)
@ -558,8 +558,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
else
{
// position driver's car according to velocity angle
double d_newPos_x = dcar->pub.DynGC.pos.x + (d_speedX*impact);
double d_newPos_y = dcar->pub.DynGC.pos.y + (d_speedY*impact);
//double d_newPos_x = dcar->pub.DynGC.pos.x + (d_speedX*impact);
//double d_newPos_y = dcar->pub.DynGC.pos.y + (d_speedY*impact);
// correct corner positions
for (i=0; i<4; i++)
@ -572,8 +572,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
#if 1
{
// position opponent car according to velocity angle
double o_newPos_x = car->pub.DynGC.pos.x + (o_speedX*impact);
double o_newPos_y = car->pub.DynGC.pos.y + (o_speedY*impact);
//double o_newPos_x = car->pub.DynGC.pos.x + (o_speedX*impact);
//double o_newPos_y = car->pub.DynGC.pos.y + (o_speedY*impact);
// correct corner positions
for (i=0; i<4; i++)
@ -698,8 +698,8 @@ int Opponent::testCollision(Driver *driver, double impact, double sizefactor, ve
double ti = MAX(0.001, impact) + 0.1;
tPosd *o_old1 = cardata->getCorner1();
tPosd *d_old1 = driver->getCorner1();
tPosd *o_old2 = cardata->getCorner2();
tPosd *d_old2 = driver->getCorner2();
//tPosd *o_old2 = cardata->getCorner2();
//tPosd *d_old2 = driver->getCorner2();
for (i=0; i<4; i++)
{

View file

@ -32,7 +32,7 @@
// Structures and Statics
////////////////////////////////////////////////////////////////////////////
static SRaceLine SRL[5] = { 0 };
static SRaceLine SRL[5] = { { 0 } };
static int SRLinit = 0;
////////////////////////////////////////////////////////////////////////////
@ -45,8 +45,8 @@ static int SRLinit = 0;
//static const int Iterations = 100; // Number of smoothing operations
static const double SecurityR = 100.0; // Security radius
static double SideDistExt = 2.0; // Security distance wrt outside
static double SideDistInt = 1.0; // Security distance wrt inside
//static double SideDistExt = 2.0; // Security distance wrt outside
//static double SideDistInt = 1.0; // Security distance wrt inside
/////////////////////////////////////////////////////////////////////////////
// Some utility macros and functions
@ -865,7 +865,7 @@ void LRaceLine::StepInterpolate(int iMin, int iMax, int Step, int rl)
}
}
static void ClosestPointOnLineFromPoint(
/*static void ClosestPointOnLineFromPoint(
vec2f *lp1, vec2f *lp2,
vec2f *p, vec2f *r )
{
@ -880,7 +880,7 @@ static void ClosestPointOnLineFromPoint(
r->x = lp1->x + ratio * vx;
r->y = lp1->y + ratio * vy;
}
}*/
static double PointDist(vec2f *p1, vec2f *p2)
{
@ -1077,8 +1077,8 @@ void LRaceLine::ComputeSpeed(int rl)
}
int nnext = (i + 5) % Divs;
int next = (i + 1) % Divs;
int prev = (i - 1 + Divs) % Divs;
//int next = (i + 1) % Divs;
//int prev = (i - 1 + Divs) % Divs;
double rInverse = SRL[rl].tRInverse[i];
double rI = fabs(rInverse);
@ -1437,8 +1437,8 @@ void LRaceLine::GetRLSteerPoint( vec2f *rt, double *offset, double time )
dist *= car->_trkPos.seg->radius;
int next = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
dist = 0.0;
double txLast = car->_pos_X;
double tyLast = car->_pos_Y;
//double txLast = car->_pos_X;
//double tyLast = car->_pos_Y;
double Time = deltaTime*3 + MAX(0.0, time);
{
@ -1476,7 +1476,7 @@ void LRaceLine::GetSteerPoint( double lookahead, vec2f *rt, double offset, doubl
int maxcount = int(lookahead / DivLength + 1);
int count = 0;
tTrackSeg *seg = car->_trkPos.seg;
//tTrackSeg *seg = car->_trkPos.seg;
int SegId = car->_trkPos.seg->id;
double dist = 0.0;//car->_trkPos.toStart;
#if 0
@ -1487,8 +1487,8 @@ void LRaceLine::GetSteerPoint( double lookahead, vec2f *rt, double offset, doubl
#endif
int next = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
dist = 0.0;
double txLast = car->_pos_X;
double tyLast = car->_pos_Y;
//double txLast = car->_pos_X;
//double tyLast = car->_pos_Y;
double Time = deltaTime*3 + MAX(0.0, time/2);
double carspeed = Mag(car->_speed_X, car->_speed_Y);
double offlane = (offset > -90 ? ((track->width/2) - offset) / track->width : SRL[SRLidx].tLane[next]);
@ -1587,8 +1587,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (famI > 0.0)
{
double toMid = car->_trkPos.toMiddle + data->speedangle * 20;
double toLeft = car->_trkPos.toLeft - data->speedangle * 20;
double toRight = car->_trkPos.toRight + data->speedangle * 20;
//double toLeft = car->_trkPos.toLeft - data->speedangle * 20;
//double toRight = car->_trkPos.toRight + data->speedangle * 20;
double modfactor = (car->_speed_x / data->avspeed);
modfactor *= modfactor;
@ -1612,12 +1612,12 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
//if (data->collision)
// timefactor *= 1.0 + MAX(0.0, (5.0-data->collision) / 5.0);
double Time = timefactor; // + CornerAccel/80;
double X4 = car->_pos_X + car->_speed_X * 0.5 / 2;
double Y4 = car->_pos_Y + car->_speed_Y * 0.5 / 2;
//double X4 = car->_pos_X + car->_speed_X * 0.5 / 2;
//double Y4 = car->_pos_Y + car->_speed_Y * 0.5 / 2;
double X = car->_pos_X + car->_speed_X * Time / 2;
double Y = car->_pos_Y + car->_speed_Y * Time / 2;
double Xk = car->_pos_X + car->_speed_X * 0.1 / 2;
double Yk = car->_pos_Y + car->_speed_Y * 0.1 / 2;
//double Xk = car->_pos_X + car->_speed_X * 0.1 / 2;
//double Yk = car->_pos_Y + car->_speed_Y * 0.1 / 2;
data->lookahead = 0.0f;
data->aInverse = SRL[LINE_MID].tRInverse[Index];
double divcount = 1.0;
@ -1647,7 +1647,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (data->followdist <= 5.0)
{
int snext = SNext;
//int snext = SNext;
//Next = (Next + int((car->_dimension_x + (5.0 - data->followdist)*1.2) / DivLength)) % Divs;
SNext = (Next + int((car->_dimension_x + (5.0 - data->followdist)*6) / DivLength)) % Divs;
if (car->_accel_x > 0.0 && data->followdist <= 2.0)
@ -1741,7 +1741,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->offset = laneoffset;
//fprintf(stderr,"GetRLData: offset=%.2f Next=%d lane=%.4f Width=%.2f\n",laneoffset,Next,tLane[Next],Width);
double sa = (data->angle > 0.0 ? MIN(data->angle, data->angle+data->speedangle/2) : MAX(data->angle, data->angle+data->speedangle/2));
//double sa = (data->angle > 0.0 ? MIN(data->angle, data->angle+data->speedangle/2) : MAX(data->angle, data->angle+data->speedangle/2));
//CalcAvoidSpeed( Next, data, sa );
#if 1
@ -1826,7 +1826,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
vec2f target;
double carspeed = Mag(car->_speed_X, car->_speed_Y);
double steertime = MIN(MaxSteerTime, MinSteerTime + MAX(0.0, carspeed-20.0)/30.0);
double lane2left = track->width * SRL[SRLidx].tLane[Next];
//double lane2left = track->width * SRL[SRLidx].tLane[Next];
// an idea to implement soon...
//if (car->_accel_x < 0.0)
@ -1846,7 +1846,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
if (fabs(nextangle) > fabs(data->speedangle))
{
double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
double anglediff = (data->speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
k1999steer += anglediff * (1.0 + MAX(1.0, 1.0 - car->_accel_x/5));
}
@ -1856,8 +1856,8 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
double dx = SRL[SRLidx].tx[NextNext] - SRL[SRLidx].tx[Prev];
double dy = SRL[SRLidx].ty[NextNext] - SRL[SRLidx].ty[Prev];
double vx = car->_speed_X;
double vy = car->_speed_Y;
//double vx = car->_speed_X;
//double vy = car->_speed_Y;
double dirx = cos(car->_yaw);
double diry = sin(car->_yaw);
double SinAngleError = dx * diry - dy * dirx;
@ -1951,7 +1951,7 @@ void LRaceLine::GetRaceLineData(tSituation *s, LRaceLineData *pdata)
data->NSsteer = lastNksteer = k1999steer;
int Prev = (KIndex + Divs - 1) % Divs;
int PrevPrev = (KIndex + Divs - 5) % Divs;
//int PrevPrev = (KIndex + Divs - 5) % Divs;
int NextNext = (KNext + 1) % Divs;
//
@ -2103,7 +2103,7 @@ double LRaceLine::getAvoidSteer(double offset, LRaceLineData *data)
double steertime = MIN(MaxSteerTime, MinSteerTime + MAX(0.0, carspeed-20.0)/30.0);
if (data->followdist < 5.0)
steertime = MIN(MaxSteerTime*1.1, steertime * 1.0 + (5.0 - data->followdist)/20);
double lane2left = track->width * SRL[SRLidx].tLane[Next];
//double lane2left = track->width * SRL[SRLidx].tLane[Next];
double amI = MIN(0.05, MAX(-0.05, SRL[SRLidx].tRInverse[Next]));
double famI = fabs(amI);
@ -2151,7 +2151,7 @@ double LRaceLine::getAvoidSteer(double offset, LRaceLineData *data)
if (fabs(nextangle) > fabs(data->speedangle))
{
double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
//double sa = MAX(-0.3, MIN(0.3, data->speedangle/3));
double anglediff = (data->speedangle - nextangle) * (0.1 + fabs(nextangle)/6);
steer += anglediff * (1.0 + MAX(1.0, 1.0 - car->_accel_x/5));
}
@ -2175,7 +2175,7 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
double offlane = ((track->width/2) - offset) / track->width;
double off2lft = track->width/2 - offset;
double off2rgt = track->width - off2lft;
tTrackSeg *seg = car->_trkPos.seg;
//tTrackSeg *seg = car->_trkPos.seg;
int SegId = car->_trkPos.seg->id;
double dist = car->_trkPos.toStart;
if (dist < 0)
@ -2183,7 +2183,7 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
if (car->_trkPos.seg->type != TR_STR)
dist *= car->_trkPos.seg->radius;
int Index = SRL[SRLidx].tSegIndex[SegId] + int(dist / SRL[SRLidx].tElemLength[SegId]);
double laneoffset = SRL[SRLidx].Width/2 - (SRL[SRLidx].tLane[Index] * SRL[SRLidx].Width);
//double laneoffset = SRL[SRLidx].Width/2 - (SRL[SRLidx].tLane[Index] * SRL[SRLidx].Width);
double rInv = SRL[LINE_MID].tRInverse[Index];
Index = This;
#if 1
@ -2216,8 +2216,8 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
next = (Index + 1) % Divs;
txNext = offlane * SRL[SRLidx].txRight[next] + (1 - offlane) * SRL[SRLidx].txLeft[next];
tyNext = offlane * SRL[SRLidx].tyRight[next] + (1 - offlane) * SRL[SRLidx].tyLeft[next];
double dx = txNext - car->_pos_X;
double dy = tyNext - car->_pos_Y;
//double dx = txNext - car->_pos_X;
//double dy = tyNext - car->_pos_Y;
if ((txNext - txIndex) * (X - txNext) +
(tyNext - tyIndex) * (Y - tyNext) < -0.1)
{
@ -2248,12 +2248,12 @@ void LRaceLine::GetPoint( double offset, vec2f *rt, double *mInverse )
int LRaceLine::findNextCorner( double *nextCRinverse )
{
tTrackSeg *seg = car->_trkPos.seg;;
//tTrackSeg *seg = car->_trkPos.seg;;
int prefer_side = ((SRL[SRLidx].tRInverse[Next] > 0.001) ? TR_LFT :
((SRL[SRLidx].tRInverse[Next]) < -0.001 ? TR_RGT : TR_STR));
double curlane = car->_trkPos.toLeft / track->width;
int next = (Next+5) % Divs, i = 1, div;
double distance = 0.0;
//double curlane = car->_trkPos.toLeft / track->width;
int /*next = (Next+5) % Divs,*/ i = 1, div;
//double distance = 0.0;
double CR = SRL[SRLidx].tRInverse[Next];
if (car->_speed_x < 5.0)
@ -2297,7 +2297,7 @@ int LRaceLine::findNextCorner( double *nextCRinverse )
double LRaceLine::correctLimit(double avoidsteer, double racesteer)
{
double nlane2left = SRL[SRLidx].tLane[Next] * SRL[SRLidx].Width;
//double nlane2left = SRL[SRLidx].tLane[Next] * SRL[SRLidx].Width;
double tbump = BumpCaution;//GetModD( tBump, This ) * 4;
// correct would take us in the opposite direction to a corner - correct less!
@ -2307,7 +2307,7 @@ double LRaceLine::correctLimit(double avoidsteer, double racesteer)
// correct would take us in the opposite direction to a corner - correct less (but not as much as above)
int nnext = (Next + (int) (car->_speed_x/3)) % Divs;
double nnlane2left = SRL[SRLidx].tLane[nnext] * SRL[SRLidx].Width;
//double nnlane2left = SRL[SRLidx].tLane[nnext] * SRL[SRLidx].Width;
if ((SRL[SRLidx].tRInverse[nnext] > 0.001 && avoidsteer > racesteer) ||
(SRL[SRLidx].tRInverse[nnext] < -0.001 && avoidsteer < racesteer))
return MAX(0.3, MIN(1.0, 1.0 - fabs(SRL[SRLidx].tRInverse[nnext]) * 40.0 - tbump));

View file

@ -35,12 +35,12 @@ SimpleStrategy::SimpleStrategy() :
m_lastfuel(0.0f),
m_expectedfuelperlap(0.0f),
m_fuelsum(0.0f),
PitDamage(5000),
pit_damage(0),
min_damage(0),
is_pitting(0),
remainlaps(0),
pit_reason(0),
PitDamage(5000),
track(NULL)
{
#ifdef SPEED_DREAMS
@ -178,7 +178,7 @@ bool SimpleStrategy::needPitstop(tCarElt* car, tSituation *s, Opponents *opp)
{
// Do we need to refuel?
int remainlaps = car->_remainingLaps;//-car->_lapsBehindLeader;
int this_pit_dammage = PitDamage;
//int this_pit_dammage = PitDamage;
if (!car->_pit)
return false;

View file

@ -37,7 +37,9 @@
#include <robottools.h>
#include <robot.h>
#ifndef SPEED_DREAMS
#define SPEED_DREAMS
#endif //SPEED_DREAMS
#ifdef SPEED_DREAMS
#include <teammanager.h>

View file

@ -47,14 +47,14 @@ static void endRace(int index, tCarElt *car, tSituation *s);
// TORCS-NG-Interface
static const int BUFSIZE = 256; // Buffer size for path/filename buffers
static const int MAXNBBOTS = 20; // Set value to max capacity you want to use here
static char* defaultBotName[MAXNBBOTS] = {
static char const* defaultBotName[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
"driver 16", "driver 17", "driver 18", "driver 19", "driver 20"
};
static char* defaultBotDesc[MAXNBBOTS] = {
static char const* defaultBotDesc[MAXNBBOTS] = {
"driver 1", "driver 2", "driver 3", "driver 4", "driver 5",
"driver 6", "driver 7", "driver 8", "driver 9", "driver 10",
"driver 11", "driver 12", "driver 13", "driver 14", "driver 15",
@ -96,7 +96,7 @@ void SetUpUSR_trb1()
// Set robots's name and xml file pathname
static void setRobotName(const char *name)
{
char* c;
//char* c;
strcpy(nameBuffer, name);
snprintf(pathBuffer, BUFSIZE, "drivers/%s/%s.xml", name, name);

View file

@ -82,7 +82,7 @@ static void* creditsPageCreate(int startChapterIndex, int startLineIndex)
{
static const unsigned maxBufSize = 256;
static char buf[maxBufSize];
static char bufColInd[4];
//static char bufColInd[4];
static float colNameColor[4] = {1.0, 0.0, 1.0, 1.0};

View file

@ -762,7 +762,7 @@ void RtTeamManagerDump(int DumpMode)
GfOut("TM: TeamPit %d:\n",TeamPit->Count);
// GfOut("TM: Header : V%d.%d (%d Bytes): x%p\n",TeamPit->Header.MajorVersion,TeamPit->Header.MinorVersion,TeamPit->Header.Size,TeamPit);
GfOut("TM: Name : %s\n",TeamPit->Name);
GfOut("TM: PitState : %d\n",TeamPit->PitState);
GfOut("TM: PitState : %p\n",TeamPit->PitState);
GfOut("TM: Pit : x%p\n",TeamPit->Pit);
// GfOut("TM: Teammates : x%p\n",TeamPit->Teammates);
// GfOut("TM: Next : x%p\n",TeamPit->Next);

View file

@ -54,6 +54,7 @@ bool RtInitTimer()
return true;
}
#endif
return false;
}
// Get timer frequency [Hz]

View file

@ -483,7 +483,7 @@ void GfuiScrollListShowElement(void *scr, int Id, int index)
{
tGfuiObject *object;
tGfuiScrollList *scrollist;
tGfuiListElement *elt;
//tGfuiListElement *elt;
int oldFirstVisible;
object = gfuiGetObject(scr, Id);

View file

@ -969,7 +969,7 @@ GfScrMenuInit(void *precMenu)
int GfuiGlutExtensionSupported(char *str)
int GfuiGlutExtensionSupported(char const *str)
{
return glutExtensionSupported(str);
}

View file

@ -303,7 +303,7 @@ extern void GfctrlMouseInitCenter(void);
extern tCtrlRef *GfctrlGetRefByName(const char *name);
extern const char *GfctrlGetNameByRef(int type, int index);
extern int GfuiGlutExtensionSupported(char *str);
extern int GfuiGlutExtensionSupported(char const *str);
#endif /* __TGFCLIENT__H__ */

View file

@ -76,14 +76,14 @@ void SimulationOptions::LoadFromFile(void* handle) {
}
void SimulationOptions::SetFloatFromGfParm(void* handle, const char* name) {
float v;
float v = 0.0f;
option_list.Get(name, v);
v = GfParmGetNum (handle, SECT_SIMU_SETTINGS, name, (char*) NULL, v);
option_list.Set(name, v);
}
void SimulationOptions::SetBoolFromGfParm(void* handle, const char* name) {
bool v;
bool v = false;
option_list.Get(name, v);
const char* s = GfParmGetStr (handle, SECT_SIMU_SETTINGS, name, "none");
v = StrToBool (s, v);

View file

@ -580,9 +580,9 @@ SimCarUpdateCornerPos(tCar *car)
void
SimTelemetryOut(tCar *car)
{
int i;
tdble Fzf, Fzr;
//int i;
#if 0
tdble Fzf, Fzr;
printf("-----------------------------\nCar: %d %s ---\n", car->carElt->index, car->carElt->_name);
printf("Seg: %d (%s) Ts:%f Tr:%f\n",
car->trkPos.seg->id, car->trkPos.seg->name, car->trkPos.toStart, car->trkPos.toRight);
@ -632,7 +632,9 @@ SimCarUpdate(tCar *car, tSituation * /* s */)
void
SimCarUpdate2(tCar *car, tSituation * /* s */)
{
#if 0
static int cnt = 10;
#endif //0
if (SimTelemetry == car->carElt->index) SimTelemetryOut(car);
#if 0
cnt--;

View file

@ -204,7 +204,7 @@ InitScene(tTrack *Track, void *TrackHandle, int bump)
int i, j;
tTrackSeg *seg;
tTrackSeg *lastSeg;
tTrackSeg *lastSeg = NULL;
tTrackSeg *mseg;
int nbvert;
tdble width, wi2;
@ -244,7 +244,7 @@ InitScene(tTrack *Track, void *TrackHandle, int bump)
int hasBorder;
tDispElt *theCurDispElt = NULL;
char sname[256];
float dmax = 0;
//float dmax = 0;
#define LG_STEP_MAX 50.0