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;
270 if (ret.
Failed())
return ret;
272 cost.
AddCost(_price[PR_BUILD_CANAL]);
283 if (ret.
Failed())
return ret;
285 cost.
AddCost(_price[PR_BUILD_CANAL]);
295 if (flags & DC_EXEC) {
314 cost.
AddCost(_price[PR_BUILD_LOCK]);
329 if (ret.
Failed())
return ret;
338 if (ret.
Failed())
return ret;
340 if (flags & DC_EXEC) {
353 MakeWaterKeepingClass(tile + delta,
GetTileOwner(tile + delta));
354 MakeWaterKeepingClass(tile - delta,
GetTileOwner(tile - delta));
398 WaterClass wc = Extract<WaterClass, 0, 2>(p2);
407 if (_game_mode != GM_EDITOR && ta.
w != 1 && ta.
h != 1)
return CMD_ERROR;
423 if (ret.
Failed())
return ret;
427 if (flags & DC_EXEC) {
431 if (_game_mode == GM_EDITOR) {
456 cost.
AddCost(_price[PR_BUILD_CANAL]);
472 Money base_cost =
IsCanal(tile) ? _price[PR_CLEAR_CANAL] : _price[PR_CLEAR_WATER];
481 if (ret.
Failed())
return ret;
486 if (ret.
Failed())
return ret;
489 if (flags & DC_EXEC) {
506 if (ret.
Failed())
return ret;
508 if (flags & DC_EXEC) {
522 { { 0, 0}, {0, 0}, { 0, 0}, {0, 0} },
523 { {-1, 0}, {0, 1}, { 1, 0}, {0, -1} },
524 { { 1, 0}, {0, -1}, {-1, 0}, {0, 1} },
534 if (flags & DC_AUTO)
return_cmd_error(STR_ERROR_BUILDING_MUST_BE_DEMOLISHED);
535 return RemoveShipDepot(tile, flags);
555 default: NOT_REACHED();
565 default:
return false;
577 default:
return false;
610 default:
return false;
623 if (base != SPR_FLAT_WATER_TILE) {
643 if (base == 0) base = SPR_CANAL_DIKES_BASE;
645 feature = CF_RIVER_EDGE;
647 if (base == 0)
return;
697 SpriteID image = SPR_FLAT_WATER_TILE;
701 if (image == 0) image = SPR_FLAT_WATER_TILE;
725 uint tile_offs = offset + dtss->image.
sprite;
728 ti->
x + dtss->
delta_x, ti->
y + dtss->delta_y,
729 dtss->size_x, dtss->size_y,
730 dtss->size_z, ti->
z + dtss->
delta_z,
745 if (water_base == 0) {
747 water_base = SPR_CANALS_BASE;
750 if (image == SPR_FLAT_WATER_TILE) {
757 if (image < 5) image += water_base;
766 base = SPR_LOCK_BASE;
768 zoffs = ti->
z > z_threshold ? 24 : 0;
777 DrawWaterClassGround(ti);
781 static void DrawRiverWater(
const TileInfo *ti)
783 SpriteID image = SPR_FLAT_WATER_TILE;
785 uint edges_offset = 0;
791 case SLOPE_NW: image = SPR_WATER_SLOPE_Y_DOWN;
break;
792 case SLOPE_SW: image = SPR_WATER_SLOPE_X_UP;
break;
793 case SLOPE_SE: image = SPR_WATER_SLOPE_Y_UP;
break;
794 case SLOPE_NE: image = SPR_WATER_SLOPE_X_DOWN;
break;
795 default: image = SPR_FLAT_WATER_TILE;
break;
802 case SLOPE_SE: edges_offset += 12;
break;
803 case SLOPE_NE: offset += 1; edges_offset += 24;
break;
804 case SLOPE_SW: offset += 2; edges_offset += 36;
break;
805 case SLOPE_NW: offset += 3; edges_offset += 48;
break;
806 default: offset = 0;
break;
819 void DrawShoreTile(
Slope tileh)
823 static const byte tileh_to_shoresprite[32] = {
824 0, 1, 2, 3, 4, 16, 6, 7, 8, 9, 17, 11, 12, 13, 14, 0,
825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 10, 15, 0,
836 void DrawWaterClassGround(
const TileInfo *ti)
842 default: NOT_REACHED();
846 static void DrawTile_Water(
TileInfo *ti)
850 DrawWaterClassGround(ti);
855 DrawShoreTile(ti->
tileh);
870 void DrawShipDepotSprite(
int x,
int y,
Axis axis,
DepotPart part)
879 static int GetSlopePixelZ_Water(
TileIndex tile, uint x, uint y)
900 default: NOT_REACHED();
break;
906 td->
str = STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT;
909 default: NOT_REACHED();
break;
922 uint pass = v->
Crash(
true);
962 if (v->
z_pos > z)
break;
1047 bool flooded =
false;
1123 default: NOT_REACHED();
1125 SetRailGroundType(tile, new_ground);
1143 default: NOT_REACHED();
1172 if (z_dest > 0)
continue;
1198 void ConvertGroundTilesIntoWaterTiles()
1238 static const byte coast_tracks[] = {0, 32, 4, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0};
1251 if (
TileX(tile) == 0) {
1255 if (
TileY(tile) == 0) {
1262 static bool ClickTile_Water(
TileIndex tile)
1323 GetSlopePixelZ_Water,
1327 GetTileTrackStatus_Water,
1331 ChangeTileOwner_Water,
1334 GetFoundation_Water,
1335 TerraformTile_Water,