Changeset - r22140:9217592fa081
[Not reviewed]
master
0 1 0
frosch - 9 years ago 2015-06-21 09:52:30
frosch@openttd.org
(svn r27313) -Fix [FS#6317]: Adding tram to town-owned bridges assigned an incorrect owner to the tram and did not count infrastructure counts properly. (marcole)
1 file changed with 5 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -487,7 +487,7 @@ CommandCost CmdBuildBridge(TileIndex end
 
	if (flags & DC_EXEC) {
 
		DiagDirection dir = AxisToDiagDir(direction);
 

	
 
		Company *c = Company::GetIfValid(owner);
 
		Company *c = Company::GetIfValid(company);
 
		switch (transport_type) {
 
			case TRANSPORT_RAIL:
 
				/* Add to company infrastructure count if required. */
 
@@ -510,13 +510,11 @@ CommandCost CmdBuildBridge(TileIndex end
 
					RoadType new_rt;
 
					FOR_EACH_SET_ROADTYPE(new_rt, roadtypes ^ prev_roadtypes) {
 
						/* A full diagonal road tile has two road bits. */
 
						Company::Get(owner)->infrastructure.road[new_rt] += (bridge_len + 2) * 2 * TUNNELBRIDGE_TRACKBIT_FACTOR;
 
						c->infrastructure.road[new_rt] += (bridge_len + 2) * 2 * TUNNELBRIDGE_TRACKBIT_FACTOR;
 
					}
 
				}
 
				Owner owner_road = owner;
 
				Owner owner_tram = owner;
 
				if (HasBit(prev_roadtypes, ROADTYPE_ROAD)) owner_road = GetRoadOwner(tile_start, ROADTYPE_ROAD);
 
				if (HasBit(prev_roadtypes, ROADTYPE_TRAM)) owner_tram = GetRoadOwner(tile_start, ROADTYPE_TRAM);
 
				Owner owner_road = HasBit(prev_roadtypes, ROADTYPE_ROAD) ? GetRoadOwner(tile_start, ROADTYPE_ROAD) : company;
 
				Owner owner_tram = HasBit(prev_roadtypes, ROADTYPE_TRAM) ? GetRoadOwner(tile_start, ROADTYPE_TRAM) : company;
 
				MakeRoadBridgeRamp(tile_start, owner, owner_road, owner_tram, bridge_type, dir,                 roadtypes);
 
				MakeRoadBridgeRamp(tile_end,   owner, owner_road, owner_tram, bridge_type, ReverseDiagDir(dir), roadtypes);
 
				break;
 
@@ -534,7 +532,7 @@ CommandCost CmdBuildBridge(TileIndex end
 

	
 
		/* Mark all tiles dirty */
 
		MarkBridgeDirty(tile_start, tile_end, AxisToDiagDir(direction), z_start);
 
		DirtyCompanyInfrastructureWindows(owner);
 
		DirtyCompanyInfrastructureWindows(company);
 
	}
 

	
 
	if ((flags & DC_EXEC) && transport_type == TRANSPORT_RAIL) {
0 comments (0 inline, 0 general)