summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-01-04 18:37:47 +0000
committerrubidium <rubidium@openttd.org>2010-01-04 18:37:47 +0000
commit740585c219043f289c724777483555228f3691c1 (patch)
treef1b08728117a1cf09b13f451707a35cba2957316
parentb378e82676b299dc8d579cd2ac020758fbf52f84 (diff)
downloadopenttd-740585c219043f289c724777483555228f3691c1.tar.xz
(svn r18720) -Codechange: simplify looping and validation of CmdBuildCanal
-rw-r--r--src/water_cmd.cpp18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp
index c2e245985..2b6f68728 100644
--- a/src/water_cmd.cpp
+++ b/src/water_cmd.cpp
@@ -296,30 +296,18 @@ CommandCost CmdBuildLock(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
CommandCost cost(EXPENSES_CONSTRUCTION);
- int size_x, size_y;
- int x;
- int y;
- int sx, sy;
if (p1 >= MapSize()) return CMD_ERROR;
/* Outside of the editor you can only build canals, not oceans */
if (p2 != 0 && _game_mode != GM_EDITOR) return CMD_ERROR;
- x = TileX(tile);
- y = TileY(tile);
- sx = TileX(p1);
- sy = TileY(p1);
-
- if (x < sx) Swap(x, sx);
- if (y < sy) Swap(y, sy);
- size_x = (x - sx) + 1;
- size_y = (y - sy) + 1;
+ TileArea ta(tile, p1);
/* Outside the editor you can only drag canals, and not areas */
- if (_game_mode != GM_EDITOR && (sx != x && sy != y)) return CMD_ERROR;
+ if (_game_mode != GM_EDITOR && ta.w != 1 && ta.h != 1) return CMD_ERROR;
- TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
+ TILE_AREA_LOOP(tile, ta) {
CommandCost ret;
Slope slope = GetTileSlope(tile, NULL);