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 */