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,