changeset 14172:c8918362d84f draft

(svn r18720) -Codechange: simplify looping and validation of CmdBuildCanal
author rubidium <rubidium@openttd.org>
date Mon, 04 Jan 2010 18:37:47 +0000
parents 72a4eae02e7d
children b25bfddb1bac
files src/water_cmd.cpp
diffstat 1 files changed, 3 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/water_cmd.cpp
+++ b/src/water_cmd.cpp
@@ -296,30 +296,18 @@
 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);