Changeset - r7817:f12ebda30a58
[Not reviewed]
master
0 1 0
rubidium - 17 years ago 2007-10-31 22:15:19
rubidium@openttd.org
(svn r11367) -Fix [FS#1258]: non-articulated road vehicles should be able to overtake (not-too-long) articulated vehicles, i.e. overtaking of articulated vehicles that are several (3+) tiles long is not supported.
1 file changed with 4 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/roadveh_cmd.cpp
Show inline comments
 
@@ -1015,7 +1015,7 @@ static void* EnumFindVehToOvertake(Vehic
 
	const OvertakeData* od = (OvertakeData*)data;
 

	
 
	return
 
		v->tile == od->tile && v->type == VEH_ROAD && v != od->u && v != od->v ?
 
		v->tile == od->tile && v->type == VEH_ROAD && v->First() == v && v != od->u && v != od->v ?
 
			v : NULL;
 
}
 

	
 
@@ -1465,8 +1465,8 @@ static bool IndividualRoadVehicleControl
 
		GetNewVehiclePosResult gp = GetNewVehiclePos(v);
 

	
 
		const Vehicle *u = RoadVehFindCloseTo(v, gp.x, gp.y, v->direction);
 
		if (u != NULL && u->cur_speed < v->cur_speed) {
 
			v->cur_speed = u->cur_speed;
 
		if (u != NULL && u->First()->cur_speed < v->cur_speed) {
 
			v->cur_speed = u->First()->cur_speed;
 
			return false;
 
		}
 

	
 
@@ -1663,6 +1663,7 @@ again:
 
		Vehicle* u = RoadVehFindCloseTo(v, x, y, new_dir);
 

	
 
		if (u != NULL) {
 
			u = u->First();
 
			/* There is a vehicle in front overtake it if possible */
 
			if (v->u.road.overtaking == 0) RoadVehCheckOvertake(v, u);
 
			if (v->u.road.overtaking == 0) v->cur_speed = u->cur_speed;
0 comments (0 inline, 0 general)