changeset 17900:684991201b65 draft

(svn r22699) -Fix [FS#4681]: Cost of adding an extra road type to a bridge or tunnel was undercalculated (adf88)
author rubidium <rubidium@openttd.org>
date Sat, 30 Jul 2011 13:55:44 +0000
parents c5c5f8f160df
children 3f0d98624f30
files src/road_cmd.cpp
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
@@ -662,12 +662,14 @@
 		if (ret.Failed()) return ret;
 
 	}
-	cost.AddCost(CountBits(pieces) * _price[PR_BUILD_ROAD]);
 
-	if (!need_to_clear && IsTileType(tile, MP_TUNNELBRIDGE)) {
-		/* Pay for *every* tile of the bridge or tunnel */
-		cost.MultiplyCost(GetTunnelBridgeLength(GetOtherTunnelBridgeEnd(tile), tile) + 2);
-	}
+	uint num_pieces = (!need_to_clear && IsTileType(tile, MP_TUNNELBRIDGE)) ?
+			/* There are 2 pieces on *every* tile of the bridge or tunnel */
+			2 * (GetTunnelBridgeLength(GetOtherTunnelBridgeEnd(tile), tile) + 2) :
+			/* Count pieces */
+			CountBits(pieces);
+
+	cost.AddCost(num_pieces * _price[PR_BUILD_ROAD]);
 
 	if (flags & DC_EXEC) {
 		switch (GetTileType(tile)) {