mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r19718) -Fix: The cost of clearing tiles was not taken into account when building locks.
This commit is contained in:
parent
3be66a5e79
commit
e83797d2e0
|
@ -198,16 +198,22 @@ static CommandCost RemoveShipDepot(TileIndex tile, DoCommandFlag flags)
|
||||||
*/
|
*/
|
||||||
static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag flags)
|
static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag flags)
|
||||||
{
|
{
|
||||||
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||||
|
|
||||||
/* middle tile */
|
/* middle tile */
|
||||||
CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
if (ret.Failed()) return ret;
|
if (ret.Failed()) return ret;
|
||||||
|
cost.AddCost(ret);
|
||||||
|
|
||||||
int delta = TileOffsByDiagDir(dir);
|
int delta = TileOffsByDiagDir(dir);
|
||||||
/* lower tile */
|
/* lower tile */
|
||||||
WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL;
|
WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL;
|
||||||
|
|
||||||
ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
if (!IsWaterTile(tile - delta)) {
|
||||||
if (ret.Failed()) return ret;
|
ret = DoCommand(tile - delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
|
if (ret.Failed()) return ret;
|
||||||
|
cost.AddCost(ret);
|
||||||
|
}
|
||||||
if (GetTileSlope(tile - delta, NULL) != SLOPE_FLAT) {
|
if (GetTileSlope(tile - delta, NULL) != SLOPE_FLAT) {
|
||||||
return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
|
return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
|
||||||
}
|
}
|
||||||
|
@ -215,8 +221,11 @@ static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag
|
||||||
/* upper tile */
|
/* upper tile */
|
||||||
WaterClass wc_upper = IsWaterTile(tile + delta) ? GetWaterClass(tile + delta) : WATER_CLASS_CANAL;
|
WaterClass wc_upper = IsWaterTile(tile + delta) ? GetWaterClass(tile + delta) : WATER_CLASS_CANAL;
|
||||||
|
|
||||||
ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
if (!IsWaterTile(tile + delta)) {
|
||||||
if (ret.Failed()) return ret;
|
ret = DoCommand(tile + delta, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
|
||||||
|
if (ret.Failed()) return ret;
|
||||||
|
cost.AddCost(ret);
|
||||||
|
}
|
||||||
if (GetTileSlope(tile + delta, NULL) != SLOPE_FLAT) {
|
if (GetTileSlope(tile + delta, NULL) != SLOPE_FLAT) {
|
||||||
return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
|
return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
|
||||||
}
|
}
|
||||||
|
@ -235,8 +244,9 @@ static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag
|
||||||
MarkCanalsAndRiversAroundDirty(tile - delta);
|
MarkCanalsAndRiversAroundDirty(tile - delta);
|
||||||
MarkCanalsAndRiversAroundDirty(tile + delta);
|
MarkCanalsAndRiversAroundDirty(tile + delta);
|
||||||
}
|
}
|
||||||
|
cost.AddCost(_price[PR_CLEAR_WATER] * 22 >> 3);
|
||||||
|
|
||||||
return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_WATER] * 22 >> 3);
|
return cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove a lock.
|
/** Remove a lock.
|
||||||
|
|
Loading…
Reference in New Issue