43 #include "table/strings.h" 
  104   Axis axis = Extract<Axis, 0, 1>(p1);
 
  127   if (ret.
Failed()) 
return ret;
 
  133   if (ret.
Failed()) 
return ret;
 
  215   if (ret.
Failed()) 
return ret;
 
  223     if (ret.
Failed()) 
return ret;
 
  227     delete Depot::GetByTile(tile);
 
  257   if (ret.
Failed()) 
return ret;
 
  262   if (ret.
Failed()) 
return ret;
 
  268     if (ret.
Failed()) 
return ret;
 
  270     cost.
AddCost(_price[PR_BUILD_CANAL]);
 
  280     if (ret.
Failed()) 
return ret;
 
  282     cost.
AddCost(_price[PR_BUILD_CANAL]);
 
  293   if (flags & DC_EXEC) {
 
  312   cost.
AddCost(_price[PR_BUILD_LOCK]);
 
  327     if (ret.
Failed()) 
return ret;
 
  336   if (ret.
Failed()) 
return ret;
 
  338   if (flags & DC_EXEC) {
 
  351     MakeWaterKeepingClass(tile + delta, 
GetTileOwner(tile + delta));
 
  352     MakeWaterKeepingClass(tile - delta, 
GetTileOwner(tile - delta));
 
  396   WaterClass wc = Extract<WaterClass, 0, 2>(p2);
 
  405   if (_game_mode != GM_EDITOR && ta.
w != 1 && ta.
h != 1) 
return CMD_ERROR;
 
  421     if (ret.
Failed()) 
return ret;
 
  425     if (flags & DC_EXEC) {
 
  429           if (_game_mode == GM_EDITOR) {
 
  454     cost.
AddCost(_price[PR_BUILD_CANAL]);
 
  470       Money base_cost = 
IsCanal(tile) ? _price[PR_CLEAR_CANAL] : _price[PR_CLEAR_WATER];
 
  479       if (ret.
Failed()) 
return ret;
 
  484         if (ret.
Failed()) 
return ret;
 
  487       if (flags & DC_EXEC) {
 
  504       if (ret.
Failed()) 
return ret;
 
  506       if (flags & DC_EXEC) {
 
  520         { { 0,  0}, {0,  0}, { 0, 0}, {0,  0} }, 
 
  521         { {-1,  0}, {0,  1}, { 1, 0}, {0, -1} }, 
 
  522         { { 1,  0}, {0, -1}, {-1, 0}, {0,  1} }, 
 
  532       if (flags & DC_AUTO) 
return_cmd_error(STR_ERROR_BUILDING_MUST_BE_DEMOLISHED);
 
  533       return RemoveShipDepot(tile, flags);
 
  553         default: NOT_REACHED();
 
  563             default: 
return false;
 
  575           default: 
return false;
 
  608     default:          
return false;
 
  621   if (base != SPR_FLAT_WATER_TILE) {
 
  641     if (base == 0) base = SPR_CANAL_DIKES_BASE;
 
  643     feature = CF_RIVER_EDGE;
 
  645     if (base == 0) 
return; 
 
  695   SpriteID image = SPR_FLAT_WATER_TILE;
 
  699     if (image == 0) image = SPR_FLAT_WATER_TILE;
 
  723     uint tile_offs = offset + dtss->image.
sprite;
 
  726       ti->
x + dtss->
delta_x, ti->
y + dtss->delta_y,
 
  727       dtss->size_x, dtss->size_y,
 
  728       dtss->size_z, ti->
z + dtss->
delta_z,
 
  743   if (water_base == 0) {
 
  745     water_base = SPR_CANALS_BASE;
 
  748     if (image == SPR_FLAT_WATER_TILE) {
 
  755   if (image < 5) image += water_base;
 
  764     base = SPR_LOCK_BASE;
 
  766     zoffs = ti->
z > z_threshold ? 24 : 0;
 
  775   DrawWaterClassGround(ti);
 
  779 static void DrawRiverWater(
const TileInfo *ti)
 
  781   SpriteID image = SPR_FLAT_WATER_TILE;
 
  783   uint     edges_offset = 0;
 
  789         case SLOPE_NW: image = SPR_WATER_SLOPE_Y_DOWN; 
break;
 
  790         case SLOPE_SW: image = SPR_WATER_SLOPE_X_UP;   
break;
 
  791         case SLOPE_SE: image = SPR_WATER_SLOPE_Y_UP;   
break;
 
  792         case SLOPE_NE: image = SPR_WATER_SLOPE_X_DOWN; 
break;
 
  793         default:       image = SPR_FLAT_WATER_TILE;    
break;
 
  800         case SLOPE_SE:              edges_offset += 12; 
break;
 
  801         case SLOPE_NE: offset += 1; edges_offset += 24; 
break;
 
  802         case SLOPE_SW: offset += 2; edges_offset += 36; 
break;
 
  803         case SLOPE_NW: offset += 3; edges_offset += 48; 
break;
 
  804         default:       offset  = 0; 
break;
 
  817 void DrawShoreTile(
Slope tileh)
 
  821   static const byte tileh_to_shoresprite[32] = {
 
  822     0, 1, 2, 3, 4, 16, 6, 7, 8, 9, 17, 11, 12, 13, 14, 0,
 
  823     0, 0, 0, 0, 0,  0, 0, 0, 0, 0,  0,  5,  0, 10, 15, 0,
 
  834 void DrawWaterClassGround(
const TileInfo *ti)
 
  840     default: NOT_REACHED();
 
  844 static void DrawTile_Water(
TileInfo *ti)
 
  848       DrawWaterClassGround(ti);
 
  853       DrawShoreTile(ti->
tileh);
 
  868 void DrawShipDepotSprite(
int x, 
int y, 
Axis axis, 
DepotPart part)
 
  877 static int GetSlopePixelZ_Water(
TileIndex tile, uint x, uint y)
 
  898         default: NOT_REACHED(); 
break;
 
  904       td->
str = STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT;
 
  907     default: NOT_REACHED(); 
break;
 
  920   uint pass = v->
Crash(
true);
 
  960       if (v->
z_pos > z) 
break;
 
 1045   bool flooded = 
false; 
 
 1121         default: NOT_REACHED();
 
 1123       SetRailGroundType(tile, new_ground);
 
 1141     default: NOT_REACHED();
 
 1170         if (z_dest > 0) 
continue;
 
 1196 void ConvertGroundTilesIntoWaterTiles()
 
 1236   static const byte coast_tracks[] = {0, 32, 4, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0};
 
 1249   if (
TileX(tile) == 0) {
 
 1253   if (
TileY(tile) == 0) {
 
 1260 static bool ClickTile_Water(
TileIndex tile)
 
 1321   GetSlopePixelZ_Water,     
 
 1325   GetTileTrackStatus_Water, 
 
 1329   ChangeTileOwner_Water,    
 
 1332   GetFoundation_Water,      
 
 1333   TerraformTile_Water,