Changeset - r18827:42db6dd94924
[Not reviewed]
master
0 1 0
michi_cc - 12 years ago 2011-12-29 20:10:06
michi_cc@openttd.org
(svn r23686) -Fix [FS#4921] (r23413): Infrastructure count of canals/locks/ship depots wasn't updated properly when a company went into bankruptcy or was taken over.
1 file changed with 14 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/water_cmd.cpp
Show inline comments
 
@@ -1259,9 +1259,20 @@ static void ChangeTileOwner_Water(TileIn
 
	if (!IsTileOwner(tile, old_owner)) return;
 

	
 
	/* No need to dirty company windows here, we'll redraw the whole screen anyway. */
 
	if (IsCanal(tile)) Company::Get(old_owner)->infrastructure.water--;
 
	if (IsLock(tile) && GetLockPart(tile) == LOCK_PART_MIDDLE) Company::Get(old_owner)->infrastructure.water -= 3 * LOCK_DEPOT_TILE_FACTOR; // Lock has three parts.
 
	if (new_owner != INVALID_OWNER) {
 
		if (IsCanal(tile)) Company::Get(new_owner)->infrastructure.water++;
 
		if (IsLock(tile) && GetLockPart(tile) == LOCK_PART_MIDDLE) Company::Get(new_owner)->infrastructure.water += 3 * LOCK_DEPOT_TILE_FACTOR; // Lock has three parts.
 
		/* Only subtract from the old owner here if the new owner is valid,
 
		 * otherwise we clear ship depots and canal water below. */
 
		if (GetWaterClass(tile) == WATER_CLASS_CANAL) {
 
			Company::Get(old_owner)->infrastructure.water--;
 
			Company::Get(new_owner)->infrastructure.water++;
 
		}
 
		if (IsShipDepot(tile)) {
 
			Company::Get(old_owner)->infrastructure.water -= LOCK_DEPOT_TILE_FACTOR;
 
			Company::Get(new_owner)->infrastructure.water += LOCK_DEPOT_TILE_FACTOR;
 
		}
 

	
 
		SetTileOwner(tile, new_owner);
 
		return;
 
	}
 
@@ -1272,7 +1283,7 @@ static void ChangeTileOwner_Water(TileIn
 
	/* Set owner of canals and locks ... and also canal under dock there was before.
 
	 * Check if the new owner after removing depot isn't OWNER_WATER. */
 
	if (IsTileOwner(tile, old_owner)) {
 
		if (IsCanal(tile)) Company::Get(old_owner)->infrastructure.water--;
 
		if (GetWaterClass(tile) == WATER_CLASS_CANAL) Company::Get(old_owner)->infrastructure.water--;
 
		SetTileOwner(tile, OWNER_NONE);
 
	}
 
}
0 comments (0 inline, 0 general)