Fix #7625: Road infrastructure cost is correctly updated on upgrading your own roads.

This commit is contained in:
Daniel Lee 2019-06-26 04:30:04 +01:00 committed by Charles Pigott
parent f6ce5c4563
commit 24bace32ba
1 changed files with 5 additions and 5 deletions

View File

@ -2269,12 +2269,12 @@ static Vehicle *UpdateRoadVehPowerProc(Vehicle *v, void *data)
} }
/** /**
* Checks the tile and returns whether the current player is allowed to convert the roadtype to another roadtype * Checks the tile and returns whether the current player is allowed to convert the roadtype to another roadtype without taking ownership
* @param owner the tile owner. * @param owner the tile owner.
* @param rtt Road/tram type. * @param rtt Road/tram type.
* @return whether the road is convertible * @return whether the road is convertible
*/ */
static bool CanConvertRoadType(Owner owner, RoadTramType rtt) static bool CanConvertUnownedRoadType(Owner owner, RoadTramType rtt)
{ {
return (owner == OWNER_NONE || (owner == OWNER_TOWN && rtt == RTT_ROAD)); return (owner == OWNER_NONE || (owner == OWNER_TOWN && rtt == RTT_ROAD));
} }
@ -2370,7 +2370,7 @@ CommandCost CmdConvertRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
/* Trying to convert other's road */ /* Trying to convert other's road */
Owner owner = GetRoadOwner(tile, rtt); Owner owner = GetRoadOwner(tile, rtt);
if (!CanConvertRoadType(owner, rtt)) { if (!CanConvertUnownedRoadType(owner, rtt)) {
CommandCost ret = CheckOwnership(owner, tile); CommandCost ret = CheckOwnership(owner, tile);
if (ret.Failed()) { if (ret.Failed()) {
error = ret; error = ret;
@ -2400,7 +2400,7 @@ CommandCost CmdConvertRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
if (flags & DC_EXEC) { // we can safely convert, too if (flags & DC_EXEC) { // we can safely convert, too
/* Update the company infrastructure counters. */ /* Update the company infrastructure counters. */
if (!IsRoadStopTile(tile) && CanConvertRoadType(owner, rtt) && owner != OWNER_TOWN) { if (!IsRoadStopTile(tile) && owner == _current_company) {
ConvertRoadTypeOwner(tile, num_pieces, owner, from_type, to_type); ConvertRoadTypeOwner(tile, num_pieces, owner, from_type, to_type);
} }
@ -2447,7 +2447,7 @@ CommandCost CmdConvertRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
if (flags & DC_EXEC) { if (flags & DC_EXEC) {
/* Update the company infrastructure counters. */ /* Update the company infrastructure counters. */
if (CanConvertRoadType(owner, rtt) && owner != OWNER_TOWN) { if (owner == _current_company) {
ConvertRoadTypeOwner(tile, num_pieces, owner, from_type, to_type); ConvertRoadTypeOwner(tile, num_pieces, owner, from_type, to_type);
ConvertRoadTypeOwner(endtile, num_pieces, owner, from_type, to_type); ConvertRoadTypeOwner(endtile, num_pieces, owner, from_type, to_type);
SetTunnelBridgeOwner(tile, endtile, _current_company); SetTunnelBridgeOwner(tile, endtile, _current_company);