changeset 17901:3f0d98624f30 draft

(svn r22700) -Fix [FS#4680]: cost of changing bridge type is undercalculated when adding road types as well (based on patch by adf88)
author rubidium <rubidium@openttd.org>
date Sat, 30 Jul 2011 14:10:12 +0000
parents 684991201b65
children ec936cb32175
files src/bridge_gui.cpp src/tunnelbridge_cmd.cpp
diffstat 2 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/bridge_gui.cpp
+++ b/src/bridge_gui.cpp
@@ -420,7 +420,11 @@
 
 		Money infra_cost = 0;
 		switch (transport_type) {
-			case TRANSPORT_ROAD: infra_cost = (bridge_len + 2) * _price[PR_BUILD_ROAD] * 2; break;
+			case TRANSPORT_ROAD:
+				infra_cost = (bridge_len + 2) * _price[PR_BUILD_ROAD] * 2;
+				/* In case we add a new road type as well, we must be aware of those costs. */
+				if (IsBridgeTile(start)) infra_cost *= CountBits(GetRoadTypes(start) | (RoadTypes)road_rail_type);
+				break;
 			case TRANSPORT_RAIL: infra_cost = (bridge_len + 2) * RailBuildCost((RailType)road_rail_type); break;
 			default: break;
 		}
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -474,7 +474,7 @@
 		bridge_len += 2; // begin and end tiles/ramps
 
 		switch (transport_type) {
-			case TRANSPORT_ROAD: cost.AddCost(bridge_len * _price[PR_BUILD_ROAD] * 2); break;
+			case TRANSPORT_ROAD: cost.AddCost(bridge_len * _price[PR_BUILD_ROAD] * 2 * CountBits(roadtypes)); break;
 			case TRANSPORT_RAIL: cost.AddCost(bridge_len * RailBuildCost(railtype)); break;
 			default: break;
 		}