@ -387,7 +387,9 @@ bool RiverModifyDesertZone(TileIndex tile, void *)
* @ param tile end tile of stretch - dragging
* @ param flags type of operation
* @ param p1 start tile of stretch - dragging
* @ param p2 waterclass to build . sea and river can only be built in scenario editor
* @ param p2 various bitstuffed data
* bits 0 - 1 : waterclass to build . sea and river can only be built in scenario editor
* bit 2 : Whether to use the Orthogonal ( 0 ) or Diagonal ( 1 ) iterator .
* @ param text unused
* @ return the cost of this operation or an error
*/
@ -399,13 +401,17 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
/* Outside of the editor you can only build canals, not oceans */
if ( wc ! = WATER_CLASS_CANAL & & _game_mode ! = GM_EDITOR ) return CMD_ERROR ;
TileArea ta ( tile , p1 ) ;
/* Outside the editor you can only drag canals, and not areas */
if ( _game_mode ! = GM_EDITOR & & ta . w ! = 1 & & ta . h ! = 1 ) return CMD_ERROR ;
if ( _game_mode ! = GM_EDITOR ) {
TileArea ta ( tile , p1 ) ;
if ( ta . w ! = 1 & & ta . h ! = 1 ) return CMD_ERROR ;
}
CommandCost cost ( EXPENSES_CONSTRUCTION ) ;
TILE_AREA_LOOP ( tile , ta ) {
TileIterator * iter = HasBit ( p2 , 2 ) ? ( TileIterator * ) new DiagonalTileIterator ( tile , p1 ) : new OrthogonalTileIterator ( tile , p1 ) ;
for ( ; * iter ! = INVALID_TILE ; + + ( * iter ) ) {
TileIndex tile = * iter ;
CommandCost ret ;
Slope slope = GetTileSlope ( tile ) ;