mirror of https://github.com/OpenTTD/OpenTTD
(svn r9952) -Fix r9951: it was not possible to build a drive-through station over a road/tram
parent
8c9b4ee548
commit
3db7a70057
|
@ -615,7 +615,7 @@ static int32 ClearTile_Station(TileIndex tile, byte flags);
|
||||||
|
|
||||||
// Tries to clear the given area. Returns the cost in case of success.
|
// Tries to clear the given area. Returns the cost in case of success.
|
||||||
// Or an error code if it failed.
|
// Or an error code if it failed.
|
||||||
int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station)
|
int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station, bool check_clear = true)
|
||||||
{
|
{
|
||||||
int32 cost = 0;
|
int32 cost = 0;
|
||||||
int allowed_z = -1;
|
int allowed_z = -1;
|
||||||
|
@ -678,7 +678,7 @@ int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invali
|
||||||
return_cmd_error(STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING);
|
return_cmd_error(STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else if (check_clear) {
|
||||||
int32 ret = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
int32 ret = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
if (CmdFailed(ret)) return ret;
|
if (CmdFailed(ret)) return ret;
|
||||||
cost += ret;
|
cost += ret;
|
||||||
|
@ -1280,7 +1280,7 @@ int32 CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||||
/* Do not remove roadtypes! */
|
/* Do not remove roadtypes! */
|
||||||
rts |= cur_rts;
|
rts |= cur_rts;
|
||||||
}
|
}
|
||||||
cost = CheckFlatLandBelow(tile, 1, 1, flags, is_drive_through ? 5 << p1 : 1 << p1, NULL);
|
cost = CheckFlatLandBelow(tile, 1, 1, flags, is_drive_through ? 5 << p1 : 1 << p1, NULL, !build_over_road);
|
||||||
if (CmdFailed(cost)) return cost;
|
if (CmdFailed(cost)) return cost;
|
||||||
|
|
||||||
Station *st = NULL;
|
Station *st = NULL;
|
||||||
|
|
|
@ -73,7 +73,7 @@ void UpdateCompanyHQ(Player *p, uint score)
|
||||||
MarkTileDirtyByTile(tile + TileDiffXY(1, 1));
|
MarkTileDirtyByTile(tile + TileDiffXY(1, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station);
|
extern int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station, bool check_clear = true);
|
||||||
|
|
||||||
/** Build or relocate the HQ. This depends if the HQ is already built or not
|
/** Build or relocate the HQ. This depends if the HQ is already built or not
|
||||||
* @param tile tile where the HQ will be built or relocated to
|
* @param tile tile where the HQ will be built or relocated to
|
||||||
|
|
Loading…
Reference in New Issue