Changeset - r16410:3bdb530fe738
[Not reviewed]
master
0 3 0
rubidium - 14 years ago 2010-11-10 20:15:48
rubidium@openttd.org
(svn r21136) -Fix [FS#4213]: bridge speed limits should apply to all wagons of a vehicle, not just the head of the vehicle
3 files changed with 7 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/roadveh_cmd.cpp
Show inline comments
 
@@ -669,7 +669,8 @@ static int RoadVehAccelerate(RoadVehicle
 

	
 
	/* Apply bridge speed limit */
 
	if (v->state == RVSB_WORMHOLE && !(v->vehstatus & VS_HIDDEN)) {
 
		v->cur_speed = min(v->cur_speed, GetBridgeSpec(GetBridgeType(v->tile))->speed * 2);
 
		RoadVehicle *first = v->First();
 
		first->cur_speed = min(first->cur_speed, GetBridgeSpec(GetBridgeType(v->tile))->speed * 2);
 
	}
 

	
 
	/* Update statusbar only if speed has changed to save CPU time */
src/train_cmd.cpp
Show inline comments
 
@@ -3296,8 +3296,8 @@ static void TrainController(Train *v, Ve
 
			 * - for tunnels, only the part when the vehicle is not visible (part of enter/exit tile too)
 
			 * - for bridges, only the middle part - without the bridge heads */
 
			if (!(v->vehstatus & VS_HIDDEN)) {
 
				v->cur_speed =
 
					min(v->cur_speed, GetBridgeSpec(GetBridgeType(v->tile))->speed);
 
				Train *first = v->First();
 
				first->cur_speed = min(first->cur_speed, GetBridgeSpec(GetBridgeType(v->tile))->speed);
 
			}
 

	
 
			if (IsTileType(gp.new_tile, MP_TUNNELBRIDGE) && HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -1562,13 +1562,13 @@ static VehicleEnterTileStatus VehicleEnt
 
			}
 
		}
 
	} else { // IsBridge(tile)
 

	
 
		if (v->IsPrimaryVehicle() && v->type != VEH_SHIP) {
 
		if (v->type != VEH_SHIP) {
 
			/* modify speed of vehicle */
 
			uint16 spd = GetBridgeSpec(GetBridgeType(tile))->speed;
 

	
 
			if (v->type == VEH_ROAD) spd *= 2;
 
			if (v->cur_speed > spd) v->cur_speed = spd;
 
			Vehicle *first = v->First();
 
			first->cur_speed = min(first->cur_speed, spd);
 
		}
 

	
 
		if (vdir == dir) {
0 comments (0 inline, 0 general)