Mercurial > hg > openttd
changeset 17206:ef0239862056 draft
(svn r21945) -Codechange: simplify setting the overtaking counter and remove the magic from its numbers
author | rubidium <rubidium@openttd.org> |
---|---|
date | Wed, 02 Feb 2011 22:06:14 +0000 |
parents | 77972dc48409 |
children | 96ef7a5b4f3a |
files | src/roadveh.h src/roadveh_cmd.cpp |
diffstat | 2 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/roadveh.h +++ b/src/roadveh.h @@ -76,6 +76,9 @@ static const uint RVC_DRIVE_THROUGH_STOP_FRAME = 11; static const uint RVC_DEPOT_STOP_FRAME = 11; +/** The number of ticks a vehicle has for overtaking. */ +static const byte RV_OVERTAKE_TIMEOUT = 35; + void RoadVehUpdateCache(RoadVehicle *v); /**
--- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -773,13 +773,10 @@ od.tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction)); if (CheckRoadBlockedForOvertaking(&od)) return; - if (od.u->cur_speed == 0 || (od.u->vehstatus & VS_STOPPED)) { - v->overtaking_ctr = 0x11; - v->overtaking = RVSB_DRIVE_SIDE; - } else { - v->overtaking_ctr = 0; - v->overtaking = RVSB_DRIVE_SIDE; - } + /* When the vehicle in front of us is stopped we may only take + * half the time to pass it than when the vehicle is moving. */ + v->overtaking_ctr = (od.u->cur_speed == 0 || (od.u->vehstatus & VS_STOPPED)) ? RV_OVERTAKE_TIMEOUT / 2 : 0; + v->overtaking = RVSB_DRIVE_SIDE; } static void RoadZPosAffectSpeed(RoadVehicle *v, byte old_z) @@ -1043,7 +1040,7 @@ if (IsTileType(v->tile, MP_STATION)) { /* Force us to be not overtaking! */ v->overtaking = 0; - } else if (++v->overtaking_ctr >= 35) { + } else if (++v->overtaking_ctr >= RV_OVERTAKE_TIMEOUT) { /* If overtaking just aborts at a random moment, we can have a out-of-bound problem, * if the vehicle started a corner. To protect that, only allow an abort of * overtake if we are on straight roads */