(svn r11504) -Fix [FS#1467]: removing docks/ship depots could result in non-canal water where canals should have been build.

This commit is contained in:
rubidium
2007-11-24 08:45:04 +00:00
parent b38d2e8dbb
commit 7f72e5573a
7 changed files with 57 additions and 16 deletions

View File

@@ -44,6 +44,7 @@
#include "strings.h"
#include "autoslope.h"
#include "transparency.h"
#include "water.h"
DEFINE_OLD_POOL_GENERIC(Station, Station)
DEFINE_OLD_POOL_GENERIC(RoadStop, RoadStop)
@@ -1899,12 +1900,7 @@ static CommandCost RemoveBuoy(Station *st, uint32 flags)
/* We have to set the water tile's state to the same state as before the
* buoy was placed. Otherwise one could plant a buoy on a canal edge,
* remove it and flood the land (if the canal edge is at level 0) */
Owner o = GetTileOwner(tile);
if (o == OWNER_WATER) {
MakeWater(tile);
} else {
MakeCanal(tile, o);
}
MakeWaterOrCanalDependingOnSurroundings(tile, GetTileOwner(tile));
MarkTileDirtyByTile(tile);
UpdateStationVirtCoordDirty(st);
@@ -2040,7 +2036,7 @@ static CommandCost RemoveDock(Station *st, uint32 flags)
if (flags & DC_EXEC) {
DoClearSquare(tile1);
MakeWater(tile2);
MakeWaterOrCanalDependingOnSurroundings(tile2, st->owner);
st->rect.AfterRemoveTile(st, tile1);
st->rect.AfterRemoveTile(st, tile2);
@@ -2064,9 +2060,6 @@ const DrawTileSprites *GetStationTileLayout(StationType st, byte gfx)
return &_station_display_datas[st][gfx];
}
/* For drawing canal edges on buoys */
extern void DrawCanalWater(TileIndex tile);
static void DrawTile_Station(TileInfo *ti)
{
const DrawTileSprites *t = NULL;