OpenTTD
Functions
tile_map.h File Reference

Map writing/reading functions for tiles. More...

#include "slope_type.h"
#include "map_func.h"
#include "core/bitmath_func.hpp"
#include "settings_type.h"

Go to the source code of this file.

Functions

static uint TileHeight (TileIndex tile)
 Returns the height of a tile.
uint TileHeightOutsideMap (int x, int y)
 Returns the tile height for a coordinate outside map.
static void SetTileHeight (TileIndex tile, uint height)
 Sets the height of a tile.
static uint TilePixelHeight (TileIndex tile)
 Returns the height of a tile in pixels.
static uint TilePixelHeightOutsideMap (int x, int y)
 Returns the tile height for a coordinate outside map.
static TileType GetTileType (TileIndex tile)
 Get the tiletype of a given tile.
static bool IsInnerTile (TileIndex tile)
 Check if a tile is within the map (not a border)
static void SetTileType (TileIndex tile, TileType type)
 Set the type of a tile.
static bool IsTileType (TileIndex tile, TileType type)
 Checks if a tile is a give tiletype.
static bool IsValidTile (TileIndex tile)
 Checks if a tile is valid.
static Owner GetTileOwner (TileIndex tile)
 Returns the owner of a tile.
static void SetTileOwner (TileIndex tile, Owner owner)
 Sets the owner of a tile.
static bool IsTileOwner (TileIndex tile, Owner owner)
 Checks if a tile belongs to the given owner.
static void SetTropicZone (TileIndex tile, TropicZone type)
 Set the tropic zone.
static TropicZone GetTropicZone (TileIndex tile)
 Get the tropic zone.
static byte GetAnimationFrame (TileIndex t)
 Get the current animation frame.
static void SetAnimationFrame (TileIndex t, byte frame)
 Set a new animation frame.
Slope GetTileSlope (TileIndex tile, int *h=NULL)
 Return the slope of a given tile inside the map.
int GetTileZ (TileIndex tile)
 Get bottom height of the tile.
int GetTileMaxZ (TileIndex tile)
 Get top height of the tile inside the map.
bool IsTileFlat (TileIndex tile, int *h=NULL)
 Check if a given tile is flat.
static Slope GetTilePixelSlope (TileIndex tile, int *h)
 Return the slope of a given tile.
Slope GetTilePixelSlopeOutsideMap (int x, int y, int *h)
 Return the slope of a given tile outside the map.
static int GetTilePixelZ (TileIndex tile)
 Get bottom height of the tile.
int GetTilePixelZOutsideMap (int x, int y)
 Get bottom height of the tile outside map.
static int GetTileMaxPixelZ (TileIndex tile)
 Get top height of the tile.
int GetTileMaxPixelZOutsideMap (int x, int y)
 Get top height of the tile outside the map.
static uint TileHash (uint x, uint y)
 Calculate a hash value from a tile position.
static uint TileHash2Bit (uint x, uint y)
 Get the last two bits of the TileHash from a tile position.

Detailed Description

Map writing/reading functions for tiles.

Definition in file tile_map.h.

Function Documentation

static byte GetAnimationFrame ( TileIndex  t)
inlinestatic
static int GetTileMaxPixelZ ( TileIndex  tile)
inlinestatic

Get top height of the tile.

Parameters
tTile to compute height of
Returns
Maximum height of the tile

Definition at line 299 of file tile_map.h.

References GetTileMaxZ(), and TILE_HEIGHT.

Referenced by DrawRailCatenary(), EnsureNoVehicleOnGround(), and SetSelectionTilesDirty().

int GetTileMaxPixelZOutsideMap ( int  x,
int  y 
)

Get top height of the tile outside the map.

See Also
Detailed description in header.
Parameters
tileTile outside to compute height of.
Returns
Maximum height of the tile.

Definition at line 235 of file tile_map.cpp.

References max(), TILE_HEIGHT, and TileHeightOutsideMap().

int GetTileMaxZ ( TileIndex  t)
static Owner GetTileOwner ( TileIndex  tile)
inlinestatic
static Slope GetTilePixelSlope ( TileIndex  tile,
int *  h 
)
inlinestatic

Return the slope of a given tile.

Parameters
tileTile to compute slope of
hIf not NULL, pointer to storage of z height
Returns
Slope of the tile, except for the HALFTILE part

Definition at line 273 of file tile_map.h.

References GetTileSlope(), and TILE_HEIGHT.

Referenced by GetNearbyTileInformation(), and ViewportAddLandscape().

Slope GetTilePixelSlopeOutsideMap ( int  x,
int  y,
int *  h 
)

Return the slope of a given tile outside the map.

Parameters
tileTile outside the map to compute slope of.
hIf not NULL, pointer to storage of z height.
Returns
Slope of the tile outside map, except for the HALFTILE part.

Definition at line 141 of file tile_map.cpp.

References GetTileSlopeGivenHeight(), TILE_HEIGHT, and TileHeightOutsideMap().

Referenced by ViewportAddLandscape().

static int GetTilePixelZ ( TileIndex  tile)
inlinestatic

Get bottom height of the tile.

Parameters
tileTile to compute height of
Returns
Minimum height of the tile

Definition at line 287 of file tile_map.h.

References GetTileZ(), and TILE_HEIGHT.

Referenced by DrawRailCatenaryOnTunnel(), and SetSelectionTilesDirty().

int GetTilePixelZOutsideMap ( int  x,
int  y 
)

Get bottom height of the tile outside map.

Parameters
tileTile outside the map to compute height of.
Returns
Minimum height of the tile outside the map.

Definition at line 200 of file tile_map.cpp.

References min(), TILE_HEIGHT, and TileHeightOutsideMap().

Slope GetTileSlope ( TileIndex  tile,
int *  h 
)
static TileType GetTileType ( TileIndex  tile)
inlinestatic
int GetTileZ ( TileIndex  tile)
static TropicZone GetTropicZone ( TileIndex  tile)
inlinestatic
static bool IsInnerTile ( TileIndex  tile)
inlinestatic

Check if a tile is within the map (not a border)

Parameters
tileThe tile to check
Returns
Whether the tile is in the interior of the map
Precondition
tile < MapSize()

Definition at line 102 of file tile_map.h.

References _settings_game, GameSettings::construction, ConstructionSettings::freeform_edges, MapSize(), TileX(), and TileY().

Referenced by GrayscaleToMapHeights(), IsTileFlat(), SetTileType(), and TgenSetTileHeight().

bool IsTileFlat ( TileIndex  tile,
int *  h 
)

Check if a given tile is flat.

Parameters
tileTile to check
hIf not NULL, pointer to storage of z height (only if tile is flat)
Returns
Whether the tile is flat

Definition at line 159 of file tile_map.cpp.

References IsInnerTile(), MapSize(), TileDiffXY(), and TileHeight().

Referenced by AfterLoadGame(), CheckIfIndustryTilesAreFree(), CmdBuildBuoy(), CmdBuildDock(), CmdBuildObject(), CmdBuildShipDepot(), DoBuildLock(), FindFurthestFromWater(), FindSpring(), FlowRiver(), GrowTown(), IsWateredTile(), MakeLake(), SetWaterClassDependingOnSurroundings(), TownCanBePlacedHere(), TryBuildLightHouse(), and TryBuildTransmitter().

static bool IsTileOwner ( TileIndex  tile,
Owner  owner 
)
inlinestatic

Checks if a tile belongs to the given owner.

Parameters
tileThe tile to check
ownerThe owner to check against
Returns
True if a tile belongs the the given owner

Definition at line 207 of file tile_map.h.

References GetTileOwner().

Referenced by AfterLoadGame(), BuildObject(), CanEnterTileOwnerCheck(), ChangeOwnershipOfCompanyItems(), CmdBuildBridge(), CmdBuildCanal(), CmdBuildObject(), CmdBuildVehicle(), CmdDeleteTown(), CmdDepotMassAutoReplace(), DoClearBridge(), DoClearTunnel(), GetOrderCmdFromTile(), DepotWindow::OnPaint(), RemoveRoad(), RoadFindPathToDest(), and Town::~Town().

static bool IsTileType ( TileIndex  tile,
TileType  type 
)
inlinestatic

Checks if a tile is a give tiletype.

This function checks if a tile got the given tiletype.

Parameters
tileThe tile to check
typeThe type to check against
Returns
true If the type matches against the type of the tile

Definition at line 143 of file tile_map.h.

References GetTileType().

Referenced by AddClearCounter(), AddClearDensity(), AddNearbyStation(), AddTreeCount(), AddTreeCounter(), AddTreeGrowth(), AdjustTileh(), AfterLoadGame(), AmbientSoundEffectCallback(), Vehicle::BeginLoading(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::CanEnterNewTile(), CanEnterTile(), CanEnterTileOwnerCheck(), ChangeOwnershipOfCompanyItems(), CheckFlatLandRailStation(), CheckFlatLandRoadStop(), CheckIfIndustryTilesAreFree(), CheckNextTrainTile(), CheckSubsidised(), ClearPathReservation(), CmdBuildCanal(), CmdBuildDock(), CmdBuildLongRoad(), CmdBuildObject(), CmdBuildRailWaypoint(), CmdBuildRoad(), CmdBuildRoadStop(), CmdBuildSingleRail(), CmdPlantTree(), CmdRemoveRoadStop(), CmdReverseTrainDirection(), CmdTerraformLand(), CmdTurnRoadVeh(), CMSAMine(), CMSATree(), CMSAWater(), Train::Crash(), DecHouseProcessingTime(), DeleteLastWagon(), DisasterTick_Aircraft(), DoClearTownHouseHelper(), DoFloodTile(), DoTriggerIndustryTile(), DrawRailCatenaryRailway(), ExtendTrainReservation(), FindFurthestFromWater(), FindIndustryToDeliver(), FindNearestEmptyLand(), FindNearIndustryName(), FindRailStationEnd(), FindStationsAroundTiles(), FindStationsNearby(), FixOldVehicles(), FollowReservation(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::FollowTileExit(), FollowTrainReservation(), FreeTrainTrackReservation(), GetAnimationFrame(), GetAxisForNewWaypoint(), GetCleanHouseType(), GetCleanIndustryGfx(), GetClearCounter(), GetClearDensity(), GetClosestWaterDistance(), GetDockOffset(), GetEffectiveWaterClass(), GetHouseAge(), GetHouseBuildingStage(), GetHouseConstructionTick(), GetHouseProcessingTime(), GetHouseRandomBits(), GetHouseTriggers(), GetIndustryAnimationLoop(), GetIndustryConstructionCounter(), GetIndustryConstructionStage(), GetIndustryGfx(), GetIndustryIndex(), GetIndustryRandomBits(), GetIndustryTriggers(), GetIndustryType(), GetNearbyAirportTileInformation(), GetNearbyIndustryTileInformation(), GetNearbyObjectTileInformation(), GetNearbyTileInformation(), GetObjectIDAtOffset(), GetObjectIndex(), GetObjectRandomBits(), GetObjectType(), GetOrderCmdFromTile(), GetOtherTunnelBridgeEnd(), GetRailTileType(), IndustryTileScopeResolver::GetRandomBits(), CanalScopeResolver::GetRandomBits(), HouseScopeResolver::GetRandomBits(), ObjectScopeResolver::GetRandomBits(), GetRawClearGround(), GetRoadOwner(), GetRoadTileType(), GetStationAround(), GetStationGfx(), GetStationIndex(), GetStationTileRandomBits(), GetStationType(), GetTileOwner(), GetTownIndex(), GetTrainForReservation(), GetTreeCount(), GetTreeCounter(), GetTreeDensity(), GetTreeGround(), GetTreeGrowth(), GetTreeType(), IndustryTileScopeResolver::GetTriggers(), HouseScopeResolver::GetTriggers(), GetTunnelBridgeDirection(), GetTunnelBridgeTransportType(), IndustryTileScopeResolver::GetVariable(), CanalScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), GetWaterTileRandomBits(), GetWaterTileType(), GrowTown(), GrowTownAtRoad(), GrowTownInTile(), HasOnewaySignalBlockingTrackdir(), HasPbsSignalOnTrackdir(), HasStationTileRail(), HasTileWaterClass(), HasTunnelBridgeReservation(), HasTunnelBridgeSnowOrDesert(), IncHouseConstructionTick(), IncrementHouseAge(), IsAirportTile(), IsBridge(), IsBridgeTile(), IsBuoyTile(), IsCoastTile(), IsDockTile(), RoadStop::IsDriveThroughRoadStopContinuation(), IsHangar(), IsHangarTile(), IsHouseCompleted(), IsIndustryCompleted(), IsLevelCrossingTile(), IsNormalRoadTile(), IsObjectTypeTile(), IsPlainRailTile(), IsPossibleCrossing(), IsRailDepotTile(), IsRailStationTile(), IsRailWaypointTile(), IsRoadDepotTile(), IsRoadStop(), IsRoadStopTile(), IsSafeWaitingPosition(), IsShipDepotTile(), IsSnowTile(), IsTileForestIndustry(), IsTunnel(), IsTunnelTile(), IsValidTile(), IsValidTileForWaypoint(), IsWaitingPositionFree(), IsWateredTile(), IsWaterTile(), Vehicle::LeaveStation(), LoadUnloadVehicle(), MakeHouseTile(), MakeSingleHouseBigger(), MarkTileDirtyIfCanalOrRiver(), MayHaveBridgeAbove(), MoveBuoysToWaypoints(), MoveWaypointsToBaseStations(), CYapfCostRailT< Types >::PfCalcCost(), ProcessOrders(), RebuildTownCaches(), RemoveRoad(), ResetHouseAge(), ResetIndustryConstructionStage(), ReverseTrainDirection(), RoadFindPathToDest(), StationRect::ScanForStationTiles(), SearchLumberMillTrees(), SearchNearbyHouseClass(), SearchNearbyHouseGRFID(), SearchNearbyHouseID(), SearchTileForStatue(), SetAnimationFrame(), SetClearCounter(), SetClearDensity(), SetClearGroundDensity(), SetDefaultRailGui(), SetHouseCompleted(), SetHouseProcessingTime(), SetHouseRandomBits(), SetHouseTriggers(), SetHouseType(), SetIndustryAnimationLoop(), SetIndustryCompleted(), SetIndustryConstructionCounter(), SetIndustryConstructionStage(), SetIndustryGfx(), SetIndustryRandomBits(), SetIndustryTriggers(), SetRoadTypes(), SetStationGfx(), SetStationTileRandomBits(), SetTileOwner(), SetTownIndex(), SetTreeCounter(), SetTreeGroundDensity(), SetTreeGrowth(), SetTropicZone(), SetTunnelBridgeReservation(), SetTunnelBridgeSnowOrDesert(), SetupFarmFieldFence(), Industry::TileBelongsToIndustry(), TileLoop_Water(), TownCanBePlacedHere(), TrainCanLeaveTile(), TrainController(), TriggerWatchedCargoCallbacks(), TryBuildLightHouse(), TryBuildTransmitter(), UpdateHousesAndTowns(), UpdateNearestTownForRoadTiles(), UpdateStatusAfterSwap(), UpdateTownCargoes(), and WatchedCargoCallback().

static bool IsValidTile ( TileIndex  tile)
inlinestatic
static void SetAnimationFrame ( TileIndex  t,
byte  frame 
)
inlinestatic

Set a new animation frame.

Parameters
tthe tile
framethe new frame number
Precondition
IsTileType(t, MP_HOUSE) || IsTileType(t, MP_OBJECT) || IsTileType(t, MP_INDUSTRY) ||IsTileType(t, MP_STATION)

Definition at line 255 of file tile_map.h.

References _me, IsTileType(), TileExtended::m7, MP_HOUSE, MP_INDUSTRY, MP_OBJECT, and MP_STATION.

Referenced by AfterLoadGame(), AnimationBase< IndustryAnimationBase, IndustryTileSpec, Industry, int, GetSimpleIndustryCallback >::AnimateTile(), AnimationBase< IndustryAnimationBase, IndustryTileSpec, Industry, int, GetSimpleIndustryCallback >::ChangeAnimationFrame(), CmdBuildRailStation(), IncreaseAnimationStage(), and MakeHouseTile().

static void SetTileHeight ( TileIndex  tile,
uint  height 
)
inlinestatic

Sets the height of a tile.

This function sets the height of the northern corner of a tile.

Parameters
tileThe tile to change the height
heightThe new height value of the tile
Precondition
tile < MapSize()
heigth <= MAX_TILE_HEIGHT

Definition at line 49 of file tile_map.h.

References _m, Tile::height, MapSize(), and MAX_TILE_HEIGHT.

Referenced by CmdTerraformLand(), FixSlopes(), FlatEmptyWorld(), GrayscaleToMapHeights(), MakeVoid(), and TgenSetTileHeight().

static void SetTileOwner ( TileIndex  tile,
Owner  owner 
)
inlinestatic

Sets the owner of a tile.

This function sets the owner status of a tile. Note that you cannot set a owner for tiles of type MP_HOUSE, MP_VOID and MP_INDUSTRY.

Parameters
tileThe tile to change the owner status.
ownerThe new owner.
Precondition
IsValidTile(tile)
The type of the tile must not be MP_HOUSE and MP_INDUSTRY

Definition at line 191 of file tile_map.h.

References _m, IsTileType(), IsValidTile(), MP_HOUSE, MP_INDUSTRY, and SB().

Referenced by AfterLoadGame(), FixOwnerOfRailTrack(), MakeBridgeRamp(), MakeClear(), MakeField(), MakeLockTile(), MakeObject(), MakeRailTunnel(), MakeRoadCrossing(), MakeRoadDepot(), MakeRoadNormal(), MakeRoadTunnel(), MakeShipDepot(), MakeShore(), MakeStation(), MakeTree(), MakeWater(), and RemoveRoad().

static void SetTileType ( TileIndex  tile,
TileType  type 
)
inlinestatic

Set the type of a tile.

This functions sets the type of a tile. If the type MP_VOID is selected the tile must be at the south-west or south-east edges of the map and vice versa.

Parameters
tileThe tile to save the new type
typeThe type to save
Precondition
tile < MapSize()
type MP_VOID <=> tile is on the south-east or south-west edge.

Definition at line 124 of file tile_map.h.

References _m, IsInnerTile(), MapSize(), MP_VOID, and SB().

Referenced by MakeBridgeRamp(), MakeClear(), MakeField(), MakeHouseTile(), MakeIndustry(), MakeLockTile(), MakeObject(), MakeRailTunnel(), MakeRoadCrossing(), MakeRoadDepot(), MakeRoadNormal(), MakeRoadTunnel(), MakeShipDepot(), MakeShore(), MakeStation(), MakeTree(), MakeVoid(), and MakeWater().

static void SetTropicZone ( TileIndex  tile,
TropicZone  type 
)
inlinestatic

Set the tropic zone.

Parameters
tilethe tile to set the zone of
typethe new type
Precondition
tile < MapSize()

Definition at line 218 of file tile_map.h.

References _m, IsTileType(), MapSize(), MP_VOID, SB(), and TROPICZONE_NORMAL.

Referenced by AfterLoadGame(), CmdPlantTree(), GenerateDesertArea(), and RiverModifyDesertZone().

static uint TileHash ( uint  x,
uint  y 
)
inlinestatic

Calculate a hash value from a tile position.

Parameters
xThe X coordinate
yThe Y coordinate
Returns
The hash of the tile

Definition at line 314 of file tile_map.h.

Referenced by AfterLoadGame(), Town::InitializeLayout(), River_Hash(), and TileHash2Bit().

static uint TileHash2Bit ( uint  x,
uint  y 
)
inlinestatic

Get the last two bits of the TileHash from a tile position.

See Also
TileHash()
Parameters
xThe X coordinate
yThe Y coordinate
Returns
The last two bits from hash of the tile

Definition at line 332 of file tile_map.h.

References GB(), and TileHash().

Referenced by DrawTile_Town(), and HouseScopeResolver::GetVariable().

static uint TileHeight ( TileIndex  tile)
inlinestatic
uint TileHeightOutsideMap ( int  x,
int  y 
)

Returns the tile height for a coordinate outside map.

Such a height is needed for painting the area outside map using completely black tiles. The idea is descending to heightlevel 0 as fast as possible.

Parameters
xThe X-coordinate (same unit as TileX).
yThe Y-coordinate (same unit as TileY).
Returns
The height in the same unit as TileHeight.

Definition at line 25 of file tile_map.cpp.

References MapMaxX(), MapMaxY(), max(), TileHeight(), and TileXY().

Referenced by GetTileMaxPixelZOutsideMap(), GetTileMaxZ(), GetTilePixelSlopeOutsideMap(), GetTilePixelZOutsideMap(), ScrollWindowTo(), and TilePixelHeightOutsideMap().

static uint TilePixelHeight ( TileIndex  tile)
inlinestatic

Returns the height of a tile in pixels.

This function returns the height of the northern corner of a tile in pixels.

Parameters
tileThe tile to get the height
Returns
The height of the tile in pixel

Definition at line 64 of file tile_map.h.

References TILE_HEIGHT, and TileHeight().

Referenced by MarkTileDirtyByTile(), SetupScreenshotViewport(), and ViewportAddLandscape().

static uint TilePixelHeightOutsideMap ( int  x,
int  y 
)
inlinestatic

Returns the tile height for a coordinate outside map.

Such a height is needed for painting the area outside map using completely black tiles. The idea is descending to heightlevel 0 as fast as possible.

Parameters
xThe X-coordinate (same unit as TileX).
yThe Y-coordinate (same unit as TileY).
Returns
The height in pixels in the same unit as TilePixelHeight.

Definition at line 77 of file tile_map.h.

References TILE_HEIGHT, and TileHeightOutsideMap().

Referenced by GetViewportY(), and MarkTileDirtyByTileOutsideMap().