(svn r19319) -Codechange: EnsureNoVehicleOnGround() returns a CommandCost.

This commit is contained in:
alberth
2010-03-05 21:20:22 +00:00
parent 0bfd06245b
commit c395b93acd
10 changed files with 109 additions and 42 deletions

View File

@@ -671,7 +671,9 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z
return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST);
}
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
CommandCost ret = EnsureNoVehicleOnGround(tile);
ret.SetGlobalErrorMessage();
if (ret.Failed()) return ret;
uint z;
Slope tileh = GetTileSlope(tile, &z);
@@ -1362,7 +1364,11 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector<T *, 4> &affected
if (!HasStationTileRail(tile)) continue;
/* If there is a vehicle on ground, do not allow to remove (flood) the tile */
if (!EnsureNoVehicleOnGround(tile)) continue;
CommandCost ret = EnsureNoVehicleOnGround(tile);
if (ret.Failed()) {
ret.SetGlobalErrorMessage();
continue;
}
/* Check ownership of station */
T *st = T::GetByTile(tile);
@@ -1526,7 +1532,9 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags)
/* for nonuniform stations, only remove tiles that are actually train station tiles */
if (!st->TileBelongsToRailStation(tile)) continue;
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
CommandCost ret = EnsureNoVehicleOnGround(tile);
ret.SetGlobalErrorMessage();
if (ret.Failed()) return ret;
cost.AddCost(_price[PR_CLEAR_STATION_RAIL]);
if (flags & DC_EXEC) {
@@ -1832,7 +1840,9 @@ static CommandCost RemoveRoadStop(TileIndex tile, DoCommandFlag flags)
/* remove the 'going through road stop' status from all vehicles on that tile */
if (flags & DC_EXEC) FindVehicleOnPos(tile, NULL, &ClearRoadStopStatusEnum);
} else {
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
CommandCost ret = EnsureNoVehicleOnGround(tile);
ret.SetGlobalErrorMessage();
if (ret.Failed()) return ret;
}
if (flags & DC_EXEC) {
@@ -2234,7 +2244,9 @@ static CommandCost RemoveAirport(TileIndex tile, DoCommandFlag flags)
TILE_AREA_LOOP(tile_cur, st->airport) {
if (!st->TileBelongsToAirport(tile_cur)) continue;
if (!EnsureNoVehicleOnGround(tile_cur)) return CMD_ERROR;
CommandCost ret = EnsureNoVehicleOnGround(tile);
ret.SetGlobalErrorMessage();
if (ret.Failed()) return ret;
cost.AddCost(_price[PR_CLEAR_STATION_AIRPORT]);
@@ -2432,8 +2444,10 @@ static CommandCost RemoveDock(TileIndex tile, DoCommandFlag flags)
TileIndex tile1 = st->dock_tile;
TileIndex tile2 = tile1 + TileOffsByDiagDir(GetDockDirection(tile1));
if (!EnsureNoVehicleOnGround(tile1)) return CMD_ERROR;
if (!EnsureNoVehicleOnGround(tile2)) return CMD_ERROR;
CommandCost ret = EnsureNoVehicleOnGround(tile1);
if (ret.Succeeded()) ret = EnsureNoVehicleOnGround(tile2);
ret.SetGlobalErrorMessage();
if (ret.Failed()) return ret;
if (flags & DC_EXEC) {
DoClearSquare(tile1);