OpenTTD Source
20241124-master-g9399a92a4f
|
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 debug_inline uint | TileHeight (Tile tile) |
Returns the height of a tile. More... | |
uint | TileHeightOutsideMap (int x, int y) |
Returns the height of a tile, also for tiles outside the map (virtual "black" tiles). More... | |
void | SetTileHeight (Tile tile, uint height) |
Sets the height of a tile. More... | |
uint | TilePixelHeight (Tile tile) |
Returns the height of a tile in pixels. More... | |
uint | TilePixelHeightOutsideMap (int x, int y) |
Returns the height of a tile in pixels, also for tiles outside the map (virtual "black" tiles). More... | |
static debug_inline TileType | GetTileType (Tile tile) |
Get the tiletype of a given tile. More... | |
bool | IsInnerTile (Tile tile) |
Check if a tile is within the map (not a border) More... | |
void | SetTileType (Tile tile, TileType type) |
Set the type of a tile. More... | |
static debug_inline bool | IsTileType (Tile tile, TileType type) |
Checks if a tile is a given tiletype. More... | |
bool | IsValidTile (Tile tile) |
Checks if a tile is valid. More... | |
Owner | GetTileOwner (Tile tile) |
Returns the owner of a tile. More... | |
void | SetTileOwner (Tile tile, Owner owner) |
Sets the owner of a tile. More... | |
bool | IsTileOwner (Tile tile, Owner owner) |
Checks if a tile belongs to the given owner. More... | |
void | SetTropicZone (Tile tile, TropicZone type) |
Set the tropic zone. More... | |
TropicZone | GetTropicZone (Tile tile) |
Get the tropic zone. More... | |
uint8_t | GetAnimationFrame (Tile t) |
Get the current animation frame. More... | |
void | SetAnimationFrame (Tile t, uint8_t frame) |
Set a new animation frame. More... | |
std::tuple< Slope, int > | GetTileSlopeZ (TileIndex tile) |
Return the slope of a given tile inside the map. More... | |
int | GetTileZ (TileIndex tile) |
Get bottom height of the tile. More... | |
int | GetTileMaxZ (TileIndex tile) |
Get top height of the tile inside the map. More... | |
bool | IsTileFlat (TileIndex tile, int *h=nullptr) |
Check if a given tile is flat. More... | |
Slope | GetTileSlope (TileIndex tile) |
Return the slope of a given tile inside the map. More... | |
std::tuple< Slope, int > | GetTilePixelSlope (TileIndex tile) |
Return the slope of a given tile. More... | |
std::tuple< Slope, int > | GetTilePixelSlopeOutsideMap (int x, int y) |
Return the slope of a given tile, also for tiles outside the map (virtual "black" tiles). More... | |
int | GetTilePixelZ (TileIndex tile) |
Get bottom height of the tile. More... | |
int | GetTileMaxPixelZ (TileIndex tile) |
Get top height of the tile. More... | |
uint | TileHash (uint x, uint y) |
Calculate a hash value from a tile position. More... | |
uint | TileHash2Bit (uint x, uint y) |
Get the last two bits of the TileHash from a tile position. More... | |
Map writing/reading functions for tiles.
Definition in file tile_map.h.
|
inline |
Get the current animation frame.
t | the tile |
Definition at line 250 of file tile_map.h.
References IsTileType(), Tile::m7(), MP_HOUSE, MP_INDUSTRY, MP_OBJECT, and MP_STATION.
Referenced by AirportTileScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), and IncreaseAnimationStage().
|
inline |
Get top height of the tile.
tile | Tile to compute height of |
Definition at line 312 of file tile_map.h.
References GetTileMaxZ(), and TILE_HEIGHT.
Referenced by EnsureNoVehicleOnGround().
int GetTileMaxZ | ( | TileIndex | t | ) |
Get top height of the tile inside the map.
t | Tile to compute height of |
Definition at line 136 of file tile_map.cpp.
References Map::MaxX(), Map::MaxY(), TileHeight(), TileX(), TileXY(), and TileY().
Referenced by AutoslopeCheckForEntranceEdge(), CheckBuildHouseSameZ(), DrawRoadTypeCatenary(), FloodVehicleProc(), GetOtherAqueductEnd(), GetTileMaxPixelZ(), RiverMakeWider(), ShipTestUpDownOnLock(), and TryBuildTownHouse().
Returns the owner of a tile.
This function returns the owner of a tile. This cannot used for tiles which type is one of MP_HOUSE, MP_VOID and MP_INDUSTRY as no company owned any of these buildings.
tile | The tile to check |
Definition at line 178 of file tile_map.h.
References GB(), IsTileType(), IsValidTile(), Tile::m1(), MP_HOUSE, and MP_INDUSTRY.
Referenced by AfterLoadCompanyStats(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::CanEnterNewTile(), CheckTileOwnership(), CmdConvertRail(), ObjectPickerCallbacks::FillUsedItems(), FixOwnerOfRailTrack(), GetTrainForReservation(), ObjectScopeResolver::GetVariable(), IsTileOwner(), MakeBuoy(), MakeLock(), MoveBuoysToWaypoints(), MoveWaypointsToBaseStations(), RemoveLock(), and UpdateObjectColours().
Return the slope of a given tile.
tile | Tile to compute slope of |
Definition at line 289 of file tile_map.h.
References GetTileSlopeZ(), and TILE_HEIGHT.
Referenced by GetNearbyTileInformation().
std::tuple<Slope, int> GetTilePixelSlopeOutsideMap | ( | int | x, |
int | y | ||
) |
Return the slope of a given tile, also for tiles outside the map (virtual "black" tiles).
x | X coordinate of the tile to compute slope of, may be outside the map. |
y | Y coordinate of the tile to compute slope of, may be outside the map. |
h | If not nullptr , pointer to storage of z height. |
Definition at line 78 of file tile_map.cpp.
|
inline |
Get bottom height of the tile.
tile | Tile to compute height of |
Definition at line 302 of file tile_map.h.
References GetTileZ(), and TILE_HEIGHT.
Referenced by CmdChangeBankBalance().
Return the slope of a given tile inside the map.
tile | Tile to compute slope of |
Definition at line 279 of file tile_map.h.
References GetTileSlopeZ().
Referenced by CanBuildHouseHere(), CanPlantTreesOnTile(), CmdBuildLock(), CmdBuildRoadDepot(), CmdBuildTrainDepot(), DoFloodTile(), GetFloodingBehaviour(), ObjectScopeResolver::GetVariable(), StationScopeResolver::GetVariable(), GrowTownWithBridge(), GrowTownWithTunnel(), IsRoadAllowedHere(), PerformStationTileSlopeCheck(), RedundantBridgeExistsNearby(), RiverMakeWider(), SearchTileForStatue(), ShipTestUpDownOnLock(), CYapfCostBase::stSlopeCost(), and TryBuildTownHouse().
Return the slope of a given tile inside the map.
tile | Tile to compute slope of |
Definition at line 55 of file tile_map.cpp.
References GetTileSlopeGivenHeight(), Map::MaxX(), Map::MaxY(), TileHeight(), TileX(), TileXY(), and TileY().
Referenced by CheckBuildableTile(), FlowsDown(), GetBridgeHeight(), GetFoundationSlope(), GetOtherAqueductEnd(), GetTilePixelSlope(), and GetTileSlope().
Get the tiletype of a given tile.
tile | The tile to get the TileType |
Definition at line 96 of file tile_map.h.
Referenced by AfterLoadCompanyStats(), CanFollowRoad(), CanPlantTreesOnTile(), ChangeTileOwner(), CleanUpRoadBits(), ClosestTownFromTile(), CmdConvertRail(), DoDryUp(), DoFloodTile(), DrawRailCatenary(), GetAnyRoadBits(), GetDepotVehicleType(), GetFloodingBehaviour(), GetFoundationSlope(), GetGrfSpecFeature(), GetNearbyTileInformation(), GetRailTrackBitsUniversal(), GetReservedTrackbits(), SmallMapWindow::GetTileColours(), GetTileRailType(), GetTileTrackStatus(), GrowTownWithExtraHouse(), Depot::IsOfType(), IsSuitableForFarmField(), IsWateredTile(), MayHaveRoad(), CYapfCostRailT< Types >::OneTileCost(), CYapfCostRoadT< Types >::OneTileCost(), PlantTreesOnTile(), Station::RemoveFromAllNearbyLists(), SetWaterClassDependingOnSurroundings(), TryReserveRailTrack(), UnreserveRailTrack(), UpdateSignalsInBuffer(), and Town::~Town().
int GetTileZ | ( | TileIndex | tile | ) |
Get bottom height of the tile.
tile | Tile to compute height of |
Definition at line 116 of file tile_map.cpp.
References Map::MaxX(), Map::MaxY(), TileHeight(), TileX(), TileXY(), and TileY().
Referenced by CheckNewIndustry_BubbleGen(), FlowRiver(), GetOtherTunnelEnd(), GetTilePixelZ(), CanalScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), GrowTownWithTunnel(), IsTunnelInWayDir(), RiverMakeWider(), ShipTestUpDownOnLock(), and TileLoopClearAlps().
|
inline |
Get the tropic zone.
tile | the tile to get the zone of |
Definition at line 238 of file tile_map.h.
References GB(), Map::Size(), and Tile::type().
Referenced by CheckNewIndustry_Lumbermill(), CheckNewIndustry_Plantation(), CheckNewIndustry_Water(), NeighbourIsNormal(), and RiverModifyDesertZone().
|
inline |
Check if a tile is within the map (not a border)
tile | The tile to check |
Definition at line 109 of file tile_map.h.
References Map::Size().
Referenced by SetTileType(), and TgenSetTileHeight().
bool IsTileFlat | ( | TileIndex | tile, |
int * | h | ||
) |
Check if a given tile is flat.
tile | Tile to check |
h | If not nullptr , pointer to storage of z height (only if tile is flat) |
Definition at line 95 of file tile_map.cpp.
References Map::MaxX(), Map::MaxY(), TileHeight(), TileX(), TileXY(), and TileY().
Referenced by CheckIfIndustryTilesAreFree(), CmdBuildBuoy(), CmdBuildShipDepot(), FindFurthestFromWater(), FindSpring(), GrowTown(), MakeLake(), RiverMakeWider(), SetWaterClassDependingOnSurroundings(), TownCanBePlacedHere(), and TryBuildTransmitter().
Checks if a tile belongs to the given owner.
tile | The tile to check |
owner | The owner to check against |
Definition at line 214 of file tile_map.h.
References GetTileOwner().
Referenced by CmdBuildVehicle(), CmdDepotMassAutoReplace(), CmdDepotSellAllVehicles(), CmdMassStartStopVehicle(), DoClearBridge(), DoClearTunnel(), GetOrderCmdFromTile(), and TestTownOwnsBridge().
Checks if a tile is a given tiletype.
This function checks if a tile has the given tiletype.
tile | The tile to check |
type | The type to check against |
Definition at line 150 of file tile_map.h.
Referenced by AddClearCounter(), AddClearDensity(), AddTreeCount(), AddTreeGrowth(), AdjustTileh(), AdvanceSingleHouseConstruction(), AmbientSoundEffectCallback(), Vehicle::BeginLoading(), CalculateRoadStopCost(), CanRoadContinueIntoNextTile(), Station::CatchmentCoversTown(), CheckFlatLandRoadStop(), CheckForDockingTile(), CheckIfIndustryTilesAreFree(), CheckSubsidised(), ClearNeighbourNonFloodingStates(), ClearPathReservation(), ClearTownHouse(), CmdBuildLongRoad(), CmdTerraformLand(), CMSAMine(), CMSATree(), CMSAWater(), Train::Crash(), DecHouseProcessingTime(), DoClearTownHouseHelper(), DoFloodTile(), DoTriggerIndustryTile(), DrawRoadCatenary(), ExtendTrainReservation(), FindFurthestFromWater(), FindNearestEmptyLand(), FindNearIndustryName(), FindRailStationEnd(), FindSubsidyCargoDestination(), FindSubsidyTownCargoRoute(), FollowReservation(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::FollowTileExit(), FollowTrainReservation(), ForAllStationsAroundTiles(), FreeTrainTrackReservation(), GetAcceptanceAroundTiles(), GetAnimationFrame(), GetAxisForNewRailWaypoint(), GetCleanHouseType(), GetCleanIndustryGfx(), GetClearCounter(), GetClearDensity(), 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(), GetProductionAroundTiles(), CanalScopeResolver::GetRandomBits(), ObjectScopeResolver::GetRandomBits(), GetRawClearGround(), GetStationGfx(), GetStationIndex(), StationFinder::GetStations(), GetStationTileRandomBits(), GetStationType(), GetTileCatchmentRadius(), GetTileHighlightType(), GetTileOwner(), GetTownIndex(), GetTrainForReservation(), GetTreeCount(), GetTreeDensity(), GetTreeGround(), GetTreeGrowth(), GetTreeType(), GetTunnelBridgeDirection(), GetTunnelBridgeTransportType(), CanalScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), GetWaterTileRandomBits(), GetWaterTileType(), GrowTown(), HasOnewaySignalBlockingTrackdir(), HasPbsSignalOnTrackdir(), HasStationTileRail(), HasTileWaterClass(), HasTunnelBridgeReservation(), HasTunnelBridgeSnowOrDesert(), HouseResolverObject::HouseResolverObject(), IncHouseConstructionTick(), IncrementHouseAge(), IsAirportTile(), IsAnyRoadStop(), IsAnyRoadStopTile(), IsBridge(), IsBridgeTile(), IsBuoyTile(), IsCoastTile(), IsDockingTile(), IsDockTile(), RoadStop::IsDriveThroughRoadStopContinuation(), IsHangar(), IsHangarTile(), IsHouseCompleted(), IsIndustryCompleted(), IsLevelCrossingTile(), IsNonFloodingWaterTile(), IsObjectTypeTile(), IsPossibleCrossing(), IsRailStationTile(), IsRailWaypointTile(), IsRoadWaypointTile(), IsSafeWaitingPosition(), IsShipDepotTile(), IsShipDestinationTile(), IsSnowTile(), IsStationRoadStop(), IsStationRoadStopTile(), IsTileForestIndustry(), IsTunnel(), IsTunnelTile(), IsValidTile(), IsValidTileForWaypoint(), IsWaitingPositionFree(), IsWaterTile(), MakeHouseTile(), MarkTileDirtyIfCanalOrRiver(), MayHaveBridgeAbove(), MoveBuoysToWaypoints(), MoveWaypointsToBaseStations(), Station::RecomputeCatchment(), RemoveGenericRoadStop(), ResetHouseAge(), ResetIndustryConstructionStage(), RoadTypesAllowHouseHere(), StationRect::ScanForStationTiles(), SearchLumberMillTrees(), SearchNearbyHouseClass(), SearchNearbyHouseGRFID(), SearchNearbyHouseID(), SearchTileForStatue(), SetAnimationFrame(), SetClearCounter(), SetClearDensity(), SetClearGroundDensity(), SetDockingTile(), SetHouseCompleted(), SetHouseProcessingTime(), SetHouseRandomBits(), SetHouseTriggers(), SetHouseType(), SetIndustryAnimationLoop(), SetIndustryCompleted(), SetIndustryConstructionCounter(), SetIndustryConstructionStage(), SetIndustryGfx(), SetIndustryRandomBits(), SetIndustryTriggers(), SetNonFloodingWaterTile(), SetStationGfx(), SetStationTileRandomBits(), SetTileOwner(), SetTownIndex(), SetTreeGroundDensity(), SetTreeGrowth(), SetTropicZone(), SetTunnelBridgeReservation(), SetTunnelBridgeSnowOrDesert(), SetupFarmFieldFence(), SetWaterTileType(), ShipTestUpDownOnLock(), TestTownOwnsBridge(), Industry::TileBelongsToIndustry(), TileLoop_Water(), TownCanBePlacedHere(), TownCanGrowRoad(), TrainCanLeaveTile(), TriggerWatchedCargoCallbacks(), TryBuildTransmitter(), UpdateHousesAndTowns(), UpdateNearestTownForRoadTiles(), UpdateStatusAfterSwap(), and WatchedCargoCallback().
|
inline |
Checks if a tile is valid.
tile | The tile to check |
Definition at line 161 of file tile_map.h.
References IsTileType(), MP_VOID, and Map::Size().
Referenced by CalculateCoverageLine(), CanConnectToRoad(), CanFollowRoad(), CanRoadContinueIntoNextTile(), CheckForDockingTile(), CheckIfIndustryTilesAreFree(), CleanUpRoadBits(), ClearDockingTilesCheckingNeighbours(), ClearNeighbourNonFloodingStates(), CmdBuildBridge(), CmdCustomNewsItem(), CmdRemoveRoadStop(), CmdStoryPageButton(), DisasterTick_Submarine(), CommandHelper< Tcmd, Tret(*)(DoCommandFlag, Targs...), true >::Do(), DoTriggerIndustryTile(), DrawTileSelectionRect(), FindDockLandPart(), GetOtherAqueductEnd(), IndustryTileScopeResolver::GetRandomBits(), ObjectScopeResolver::GetRandomBits(), GetTileOwner(), IndustryTileScopeResolver::GetTriggers(), ObjectScopeResolver::GetVariable(), GrowTownWithBridge(), GrowTownWithTunnel(), GoalListWindow::HandleClick(), HouseResolverObject::HouseResolverObject(), InvalidateWaterRegion(), IsNeighborRoadTile(), IsShipDestinationTile(), IsTunnelInWayDir(), IsValidLink(), MakeLake(), MarkTileDirtyIfCanalOrRiver(), NeighbourIsNormal(), RedundantBridgeExistsNearby(), RiverMakeWider(), RoadTypesAllowHouseHere(), SetTileOwner(), TileLoop_Water(), and VerifyElementContentParameters().
|
inline |
Set a new animation frame.
t | the tile |
frame | the new frame number |
Definition at line 262 of file tile_map.h.
References IsTileType(), Tile::m7(), MP_HOUSE, MP_INDUSTRY, MP_OBJECT, and MP_STATION.
Referenced by IncreaseAnimationStage(), and MakeHouseTile().
|
inline |
Sets the height of a tile.
This function sets the height of the northern corner of a tile.
tile | The tile to change the height |
height | The new height value of the tile |
Definition at line 57 of file tile_map.h.
References Tile::height(), MAX_TILE_HEIGHT, and Map::Size().
Referenced by FlatEmptyWorld(), MakeVoid(), and TgenSetTileHeight().
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.
tile | The tile to change the owner status. |
owner | The new owner. |
Definition at line 198 of file tile_map.h.
References IsTileType(), IsValidTile(), Tile::m1(), MP_HOUSE, MP_INDUSTRY, and SB().
Referenced by FixOwnerOfRailTrack(), MakeBridgeRamp(), MakeClear(), MakeField(), MakeLockTile(), MakeObject(), MakeRailDepot(), MakeRailTunnel(), MakeRoadCrossing(), MakeRoadDepot(), MakeRoadNormal(), MakeRoadTunnel(), MakeShipDepot(), MakeShore(), MakeStation(), MakeTree(), MakeWater(), and SetTunnelBridgeOwner().
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.
tile | The tile to save the new type |
type | The type to save |
Definition at line 131 of file tile_map.h.
References IsInnerTile(), MP_VOID, SB(), Map::Size(), and Tile::type().
Referenced by MakeBridgeRamp(), MakeClear(), MakeField(), MakeHouseTile(), MakeIndustry(), MakeLockTile(), MakeObject(), MakeRailDepot(), MakeRailTunnel(), MakeRoadCrossing(), MakeRoadDepot(), MakeRoadNormal(), MakeRoadTunnel(), MakeShipDepot(), MakeShore(), MakeStation(), MakeTree(), MakeVoid(), and MakeWater().
|
inline |
Set the tropic zone.
tile | the tile to set the zone of |
type | the new type |
Definition at line 225 of file tile_map.h.
References IsTileType(), MP_VOID, SB(), Map::Size(), TROPICZONE_NORMAL, and Tile::type().
Referenced by RiverModifyDesertZone().
|
inline |
Calculate a hash value from a tile position.
x | The X coordinate |
y | The Y coordinate |
Definition at line 324 of file tile_map.h.
Referenced by Town::InitializeLayout().
|
inline |
Get the last two bits of the TileHash from a tile position.
x | The X coordinate |
y | The Y coordinate |
Definition at line 342 of file tile_map.h.
Referenced by HouseScopeResolver::GetVariable().
|
static |
Returns the height of a tile.
This function returns the height of the northern corner of a tile. This is saved in the global map-array. It does not take affect by any slope-data of the tile.
tile | The tile to get the height from |
Definition at line 29 of file tile_map.h.
Referenced by CalcHeightdiff(), CalculateCoverageLine(), CheckIfCanLevelIndustryPlatform(), ClickChangeMaxHlCheat(), CmdLevelLand(), CmdTerraformLand(), FlowRiver(), GetTileHeightBelowAircraft(), GetTileMaxZ(), GetTileSlopeZ(), GetTileZ(), IsTileFlat(), MakeHeightmapScreenshot(), MakeLake(), MarkBridgeDirty(), MarkTileDirtyByTile(), TerraformGetHeightOfTile(), and TilePixelHeight().
|
inline |
Returns the height of a tile, also for tiles outside the map (virtual "black" tiles).
x | X coordinate of the tile, may be outside the map. |
y | Y coordinate of the tile, may be outside the map. |
Definition at line 42 of file tile_map.h.
|
inline |
Returns the height of a tile in pixels.
This function returns the height of the northern corner of a tile in pixels.
tile | The tile to get the height |
Definition at line 72 of file tile_map.h.
References TILE_HEIGHT, and TileHeight().
|
inline |
Returns the height of a tile in pixels, also for tiles outside the map (virtual "black" tiles).
x | X coordinate of the tile, may be outside the map. |
y | Y coordinate of the tile, may be outside the map. |
Definition at line 84 of file tile_map.h.
Referenced by GetViewportY().