#include <ai_tile.hpp>

Public Types | |
| enum | ErrorMessages { ERR_TILE_BASE = AIError::ERR_CAT_TILE << AIError::ERR_CAT_BIT_SIZE, ERR_TILE_TOO_HIGH, ERR_TILE_TOO_LOW, ERR_AREA_ALREADY_FLAT, ERR_EXCAVATION_WOULD_DAMAGE } |
| Error messages related to modifying tiles. More... | |
| enum | Corner { CORNER_W = 0, CORNER_S = 1, CORNER_E = 2, CORNER_N = 3, CORNER_INVALID = 0xFF } |
| Enumeration for corners of tiles. More... | |
| enum | Slope { SLOPE_FLAT = 0x00, SLOPE_W = 1 << CORNER_W, SLOPE_S = 1 << CORNER_S, SLOPE_E = 1 << CORNER_E, SLOPE_N = 1 << CORNER_N, SLOPE_STEEP = 0x10, SLOPE_NW = SLOPE_N | SLOPE_W, SLOPE_SW = SLOPE_S | SLOPE_W, SLOPE_SE = SLOPE_S | SLOPE_E, SLOPE_NE = SLOPE_N | SLOPE_E, SLOPE_EW = SLOPE_E | SLOPE_W, SLOPE_NS = SLOPE_N | SLOPE_S, SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, SLOPE_NWS = SLOPE_N | SLOPE_W | SLOPE_S, SLOPE_WSE = SLOPE_W | SLOPE_S | SLOPE_E, SLOPE_SEN = SLOPE_S | SLOPE_E | SLOPE_N, SLOPE_ENW = SLOPE_E | SLOPE_N | SLOPE_W, SLOPE_STEEP_W = SLOPE_STEEP | SLOPE_NWS, SLOPE_STEEP_S = SLOPE_STEEP | SLOPE_WSE, SLOPE_STEEP_E = SLOPE_STEEP | SLOPE_SEN, SLOPE_STEEP_N = SLOPE_STEEP | SLOPE_ENW, SLOPE_INVALID = 0xFFFF } |
| Enumeration for the slope-type. More... | |
| enum | TransportType { TRANSPORT_RAIL = 0, TRANSPORT_ROAD = 1, TRANSPORT_WATER = 2, TRANSPORT_AIR = 3, TRANSPORT_INVALID = -1 } |
| The different transport types a tile can have. More... | |
Static Public Member Functions | |
| static const char * | GetClassName () |
| static bool | IsBuildable (TileIndex tile) |
| Check if this tile is buildable, i.e. | |
| static bool | IsBuildableRectangle (TileIndex tile, uint width, uint height) |
| Check if this tile is buildable in a rectangle around a tile, with the entry in the list as top-left. | |
| static bool | IsWaterTile (TileIndex tile) |
| Checks whether the given tile is actually a water tile. | |
| static bool | IsCoastTile (TileIndex tile) |
| Checks whether the given tile is actually a coast tile. | |
| static bool | IsStationTile (TileIndex tile) |
| Checks whether the given tile is a station tile of any station. | |
| static bool | IsSteepSlope (Slope slope) |
| Check if a tile has a steep slope. | |
| static bool | IsHalftileSlope (Slope slope) |
| Check if a tile has a halftile slope. | |
| static bool | HasTreeOnTile (TileIndex tile) |
| Check if the tile has any tree on it. | |
| static bool | IsFarmTile (TileIndex tile) |
| Check if the tile is a farmland tile. | |
| static bool | IsRockTile (TileIndex tile) |
| Check if the tile is a rock tile. | |
| static bool | IsRoughTile (TileIndex tile) |
| Check if the tile is a rough tile. | |
| static bool | IsSnowTile (TileIndex tile) |
| Check if the tile is a snow tile. | |
| static bool | IsDesertTile (TileIndex tile) |
| Check if the tile is a desert tile. | |
| static Slope | GetSlope (TileIndex tile) |
| Get the slope of a tile. | |
| static Slope | GetComplementSlope (Slope slope) |
| Get the complement of the slope. | |
| static int32 | GetHeight (TileIndex tile) |
| Get the height of the north corner of a tile. | |
| static int32 | GetMinHeight (TileIndex tile) |
| Get the minimal height on a tile. | |
| static int32 | GetMaxHeight (TileIndex tile) |
| Get the maximal height on a tile. | |
| static int32 | GetCornerHeight (TileIndex tile, Corner corner) |
| Get the height of a certain corner of a tile. | |
| static AICompany::CompanyID | GetOwner (TileIndex tile) |
| Get the owner of the tile. | |
| static bool | HasTransportType (TileIndex tile, TransportType transport_type) |
| Checks whether the given tile contains parts suitable for the given TransportType. | |
| static int32 | GetCargoAcceptance (TileIndex tile, CargoID cargo_type, uint width, uint height, uint radius) |
| Check how much cargo this tile accepts. | |
| static int32 | GetCargoProduction (TileIndex tile, CargoID cargo_type, uint width, uint height, uint radius) |
| Checks how many tiles in the radius produces this cargo. | |
| static int32 | GetDistanceManhattanToTile (TileIndex tile_from, TileIndex tile_to) |
| Get the manhattan distance from the tile to the tile. | |
| static int32 | GetDistanceSquareToTile (TileIndex tile_from, TileIndex tile_to) |
| Get the square distance from the tile to the tile. | |
| static bool | RaiseTile (TileIndex tile, int32 slope) |
| Raise the given corners of the tile. | |
| static bool | LowerTile (TileIndex tile, int32 slope) |
| Lower the given corners of the tile. | |
| static bool | LevelTiles (TileIndex start_tile, TileIndex end_tile) |
| Level all tiles in the rectangle between start_tile and end_tile so they are at the same height. | |
| static bool | DemolishTile (TileIndex tile) |
| Destroy everything on the given tile. | |
| static bool | PlantTree (TileIndex tile) |
| Create a random tree on a tile. | |
| static bool | PlantTreeRectangle (TileIndex tile, uint width, uint height) |
| Create a random tree on a rectangle of tiles. | |
| static bool | IsWithinTownInfluence (TileIndex tile, TownID town_id) |
| Find out if this tile is within the rating influence of a town. | |
| static TownID | GetClosestTown (TileIndex tile) |
| Find the town that is closest to a tile. | |
Definition at line 15 of file ai_tile.hpp.
Error messages related to modifying tiles.
| ERR_TILE_BASE | Base for tile related errors. |
| ERR_TILE_TOO_HIGH | Tile can't be raised any higher. |
| ERR_TILE_TOO_LOW | Tile can't be lowered any lower. |
| ERR_AREA_ALREADY_FLAT | The area was already flat. |
| ERR_EXCAVATION_WOULD_DAMAGE | There is a tunnel underneed. |
Definition at line 22 of file ai_tile.hpp.
| enum AITile::Corner |
Enumeration for corners of tiles.
| CORNER_W | West corner. |
| CORNER_S | South corner. |
| CORNER_E | East corner. |
| CORNER_N | North corner. |
Definition at line 43 of file ai_tile.hpp.
| enum AITile::Slope |
Enumeration for the slope-type.
This enumeration use the chars N, E, S, W corresponding the direction North, East, South and West. The top corner of a tile is the north-part of the tile.
Definition at line 59 of file ai_tile.hpp.
| bool AITile::IsBuildable | ( | TileIndex | tile | ) | [static] |
Check if this tile is buildable, i.e.
no things on it that needs demolishing.
| tile | The tile to check on. |
For rail you also might want to check for AIRoad::IsRoad(), as in some cases you can build rails on road-tiles.
Definition at line 16 of file ai_tile.cpp.
References CountBits(), GetTileType(), IsValidTile(), MP_CLEAR, MP_ROAD, MP_TREES, MP_WATER, OWNER_TOWN, ROADTYPE_ROAD, and ROADTYPES_ROAD.
Referenced by IsBuildableRectangle().
| bool AITile::IsBuildableRectangle | ( | TileIndex | tile, | |
| uint | width, | |||
| uint | height | |||
| ) | [static] |
Check if this tile is buildable in a rectangle around a tile, with the entry in the list as top-left.
| tile | The tile to check on. | |
| width | The width of the rectangle. | |
| height | The height of the rectangle. |
Definition at line 37 of file ai_tile.cpp.
References AIMap::GetTileIndex(), AIMap::GetTileX(), AIMap::GetTileY(), and IsBuildable().
| bool AITile::IsWaterTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is actually a water tile.
| tile | The tile to check on. |
Definition at line 53 of file ai_tile.cpp.
References IsTileType(), IsValidTile(), and MP_WATER.
| bool AITile::IsCoastTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is actually a coast tile.
| tile | The tile to check. |
Definition at line 60 of file ai_tile.cpp.
References IsTileType(), IsValidTile(), and MP_WATER.
| bool AITile::IsStationTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is a station tile of any station.
| tile | The tile to check. |
Definition at line 67 of file ai_tile.cpp.
References IsTileType(), IsValidTile(), and MP_STATION.
Referenced by AIAirport::GetAirportType().
| bool AITile::IsSteepSlope | ( | Slope | slope | ) | [static] |
Check if a tile has a steep slope.
Steep slopes are slopes with a height difference of 2 across one diagonal of the tile.
| slope | The slope to check on. |
Definition at line 74 of file ai_tile.cpp.
References IsSteepSlope(), SLOPE_ELEVATED, SLOPE_HALFTILE_MASK, and SLOPE_STEEP.
| bool AITile::IsHalftileSlope | ( | Slope | slope | ) | [static] |
Check if a tile has a halftile slope.
Halftile slopes appear on top of halftile foundations. E.g. the slope you get when building a horizontal railtrack on the top of a SLOPE_N or SLOPE_STEEP_N.
| slope | The slope to check on. |
Definition at line 81 of file ai_tile.cpp.
References IsHalftileSlope(), SLOPE_ELEVATED, SLOPE_HALFTILE_MASK, and SLOPE_STEEP.
| bool AITile::HasTreeOnTile | ( | TileIndex | tile | ) | [static] |
Check if the tile has any tree on it.
| tile | The tile to check on. |
Definition at line 88 of file ai_tile.cpp.
References IsTileType(), and MP_TREES.
| bool AITile::IsFarmTile | ( | TileIndex | tile | ) | [static] |
Check if the tile is a farmland tile.
| tile | The tile to check on. |
Definition at line 93 of file ai_tile.cpp.
References CLEAR_FIELDS, IsClearGround(), IsTileType(), and MP_CLEAR.
| bool AITile::IsRockTile | ( | TileIndex | tile | ) | [static] |
Check if the tile is a rock tile.
| tile | The tile to check on. |
Definition at line 98 of file ai_tile.cpp.
References CLEAR_ROCKS, IsClearGround(), IsTileType(), and MP_CLEAR.
| bool AITile::IsRoughTile | ( | TileIndex | tile | ) | [static] |
Check if the tile is a rough tile.
| tile | The tile to check on. |
Definition at line 103 of file ai_tile.cpp.
References CLEAR_ROUGH, IsClearGround(), IsTileType(), and MP_CLEAR.
| bool AITile::IsSnowTile | ( | TileIndex | tile | ) | [static] |
Check if the tile is a snow tile.
| tile | The tile to check on. |
Definition at line 108 of file ai_tile.cpp.
References CLEAR_SNOW, IsClearGround(), IsTileType(), and MP_CLEAR.
| bool AITile::IsDesertTile | ( | TileIndex | tile | ) | [static] |
Check if the tile is a desert tile.
| tile | The tile to check on. |
Definition at line 113 of file ai_tile.cpp.
References CLEAR_DESERT, IsClearGround(), IsTileType(), and MP_CLEAR.
| AITile::Slope AITile::GetSlope | ( | TileIndex | tile | ) | [static] |
Get the slope of a tile.
This is the slope of the bare tile. A possible foundation on the tile does not influence this slope.
| tile | The tile to check on. |
Definition at line 118 of file ai_tile.cpp.
References GetTileSlope(), IsValidTile(), and SLOPE_INVALID.
Referenced by AIRoad::CanBuildConnectedRoadPartsHere().
| AITile::Slope AITile::GetComplementSlope | ( | Slope | slope | ) | [static] |
Get the complement of the slope.
| slope | The slope to get the complement of. |
!IsSteepSlope(slope).
!IsHalftileSlope(slope).
Definition at line 125 of file ai_tile.cpp.
References ComplementSlope(), SLOPE_ELEVATED, and SLOPE_INVALID.
| int32 AITile::GetHeight | ( | TileIndex | tile | ) | [static] |
Get the height of the north corner of a tile.
The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
| tile | The tile to check on. |
Definition at line 132 of file ai_tile.cpp.
References IsValidTile(), and TileHeight().
| int32 AITile::GetMinHeight | ( | TileIndex | tile | ) | [static] |
Get the minimal height on a tile.
The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
| tile | The tile to check on. |
Definition at line 139 of file ai_tile.cpp.
References GetTileZ(), IsValidTile(), and TILE_HEIGHT.
| int32 AITile::GetMaxHeight | ( | TileIndex | tile | ) | [static] |
Get the maximal height on a tile.
The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
| tile | The tile to check on. |
Definition at line 146 of file ai_tile.cpp.
References GetTileMaxZ(), IsValidTile(), and TILE_HEIGHT.
Get the height of a certain corner of a tile.
The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
| tile | The tile to check on. | |
| corner | The corner to query. |
Definition at line 153 of file ai_tile.cpp.
References GetSlopeZInCorner(), GetTileSlope(), IsValidCorner(), IsValidTile(), and TILE_HEIGHT.
| AICompany::CompanyID AITile::GetOwner | ( | TileIndex | tile | ) | [static] |
Get the owner of the tile.
| tile | The tile to get the owner from. |
Definition at line 162 of file ai_tile.cpp.
References AICompany::COMPANY_INVALID, GetTileOwner(), IsTileType(), IsValidTile(), MP_HOUSE, MP_INDUSTRY, and AICompany::ResolveCompanyID().
| bool AITile::HasTransportType | ( | TileIndex | tile, | |
| TransportType | transport_type | |||
| ) | [static] |
Checks whether the given tile contains parts suitable for the given TransportType.
| tile | The tile to check. | |
| transport_type | The TransportType to check against. |
Definition at line 171 of file ai_tile.cpp.
References GetTileTrackStatus(), IsValidTile(), TRACKDIR_BIT_NONE, and TrackStatusToTrackdirBits().
Referenced by AIRail::GetRailType().
| int32 AITile::GetCargoAcceptance | ( | TileIndex | tile, | |
| CargoID | cargo_type, | |||
| uint | width, | |||
| uint | height, | |||
| uint | radius | |||
| ) | [static] |
Check how much cargo this tile accepts.
It creates a radius around the tile, and adds up all acceptance of this cargo.
| tile | The tile to check on. | |
| cargo_type | The cargo to check the acceptance of. | |
| width | The width of the station. | |
| height | The height of the station. | |
| radius | The radius of the station. |
Definition at line 178 of file ai_tile.cpp.
References _settings_game, CA_UNMODIFIED, GetAcceptanceAroundTiles(), IsValidTile(), StationSettings::modified_catchment, and GameSettings::station.
| int32 AITile::GetCargoProduction | ( | TileIndex | tile, | |
| CargoID | cargo_type, | |||
| uint | width, | |||
| uint | height, | |||
| uint | radius | |||
| ) | [static] |
Checks how many tiles in the radius produces this cargo.
It creates a radius around the tile, and adds up all tiles that produce this cargo.
| tile | The tile to check on. | |
| cargo_type | The cargo to check the production of. | |
| width | The width of the station. | |
| height | The height of the station. | |
| radius | The radius of the station. |
Definition at line 187 of file ai_tile.cpp.
References _settings_game, CA_UNMODIFIED, GetProductionAroundTiles(), IsValidTile(), StationSettings::modified_catchment, and GameSettings::station.
Get the manhattan distance from the tile to the tile.
| tile_from | The tile to get the distance to. | |
| tile_to | The tile to get the distance to. |
Definition at line 196 of file ai_tile.cpp.
References AIMap::DistanceManhattan().
Get the square distance from the tile to the tile.
| tile_from | The tile to get the distance to. | |
| tile_to | The tile to get the distance to. |
Definition at line 201 of file ai_tile.cpp.
References AIMap::DistanceSquare().
| bool AITile::RaiseTile | ( | TileIndex | tile, | |
| int32 | slope | |||
| ) | [static] |
Raise the given corners of the tile.
The corners can be combined, for example: SLOPE_N | SLOPE_W (= SLOPE_NW) will raise the west and the north corner.
| tile | The tile to raise. | |
| slope | Corners to raise (SLOPE_xxx). |
Definition at line 206 of file ai_tile.cpp.
References CMD_TERRAFORM_LAND, AIObject::DoCommand(), EnforcePrecondition, and MapSize().
| bool AITile::LowerTile | ( | TileIndex | tile, | |
| int32 | slope | |||
| ) | [static] |
Lower the given corners of the tile.
The corners can be combined, for example: SLOPE_N | SLOPE_W (= SLOPE_NW) will lower the west and the north corner.
| tile | The tile to lower. | |
| slope | Corners to lower (SLOPE_xxx). |
Definition at line 213 of file ai_tile.cpp.
References CMD_TERRAFORM_LAND, AIObject::DoCommand(), EnforcePrecondition, and MapSize().
Level all tiles in the rectangle between start_tile and end_tile so they are at the same height.
All tiles will be raised or lowered until they are at height AITile::GetHeight(start_tile).
| start_tile | One corner of the rectangle to level. | |
| end_tile | The opposite corner of the rectangle. |
end_tile < AIMap::GetMapSize().
This function may return true in AITestMode, although it fails in AIExecMode.
Definition at line 220 of file ai_tile.cpp.
References CMD_LEVEL_LAND, AIObject::DoCommand(), EnforcePrecondition, and MapSize().
| bool AITile::DemolishTile | ( | TileIndex | tile | ) | [static] |
Destroy everything on the given tile.
| tile | The tile to demolish. |
| AIError::ERR_AREA_NOT_CLEAR |
Definition at line 228 of file ai_tile.cpp.
References CMD_LANDSCAPE_CLEAR, AIObject::DoCommand(), EnforcePrecondition, and IsValidTile().
| bool AITile::PlantTree | ( | TileIndex | tile | ) | [static] |
Create a random tree on a tile.
| tile | The tile to build a tree on. |
Definition at line 235 of file ai_tile.cpp.
References CMD_PLANT_TREE, AIObject::DoCommand(), EnforcePrecondition, and IsValidTile().
| bool AITile::PlantTreeRectangle | ( | TileIndex | tile, | |
| uint | width, | |||
| uint | height | |||
| ) | [static] |
Create a random tree on a rectangle of tiles.
| tile | The top left tile of the rectangle. | |
| width | The width of the rectangle. | |
| height | The height of the rectangle. |
width >= 1 && width <= 20.
height >= 1 && height <= 20.
Definition at line 242 of file ai_tile.cpp.
References CMD_PLANT_TREE, AIObject::DoCommand(), EnforcePrecondition, IsValidTile(), and TileDiffXY().
Find out if this tile is within the rating influence of a town.
Stations on this tile influence the rating of the town.
| tile | The tile to check. | |
| town_id | The town to check. |
Definition at line 252 of file ai_tile.cpp.
References AITown::IsWithinTownInfluence().
Find the town that is closest to a tile.
Stations you build at this tile will belong to this town.
| tile | The tile to check. |
Definition at line 257 of file ai_tile.cpp.
References IsValidTile().
1.5.6