Changeset - r22449:b12e71e436c7
[Not reviewed]
master
0 1 0
frosch - 8 years ago 2016-09-18 14:07:52
frosch@openttd.org
(svn r27656) -Fix [FS#6511]: When removing objects of bankrupt companies the tiles may revert to canal. In that case also check the ownership of the canal.
1 file changed with 9 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/object_cmd.cpp
Show inline comments
 
@@ -767,28 +767,36 @@ void GenerateObjects()
 
}
 

	
 
static void ChangeTileOwner_Object(TileIndex tile, Owner old_owner, Owner new_owner)
 
{
 
	if (!IsTileOwner(tile, old_owner)) return;
 

	
 
	bool do_clear = false;
 

	
 
	if (IsObjectType(tile, OBJECT_OWNED_LAND) && new_owner != INVALID_OWNER) {
 
		SetTileOwner(tile, new_owner);
 
	} else if (IsObjectType(tile, OBJECT_STATUE)) {
 
		Town *t = Object::GetByTile(tile)->town;
 
		ClrBit(t->statues, old_owner);
 
		if (new_owner != INVALID_OWNER && !HasBit(t->statues, new_owner)) {
 
			/* Transfer ownership to the new company */
 
			SetBit(t->statues, new_owner);
 
			SetTileOwner(tile, new_owner);
 
		} else {
 
			ReallyClearObjectTile(Object::GetByTile(tile));
 
			do_clear = true;
 
		}
 

	
 
		SetWindowDirty(WC_TOWN_AUTHORITY, t->index);
 
	} else {
 
		do_clear = true;
 
	}
 

	
 
	if (do_clear) {
 
		ReallyClearObjectTile(Object::GetByTile(tile));
 
		/* When clearing objects, they may turn into canal, which may require transfering ownership. */
 
		ChangeTileOwner(tile, old_owner, new_owner);
 
	}
 
}
 

	
 
static CommandCost TerraformTile_Object(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new)
 
{
 
	ObjectType type = GetObjectType(tile);
0 comments (0 inline, 0 general)