# landscape.h File Reference

Functions related to OTTD's landscape. More...

`#include "core/geometry_type.hpp"`
`#include "tile_cmd.h"`
`#include "slope_type.h"`
`#include "direction_type.h"`

Go to the source code of this file.

## Data Structures
struct | SnowLine
| Structure describing the height of the snow line each day of the year. More...
## Enumerations
enum | { SNOW_LINE_MONTHS = 12, SNOW_LINE_DAYS = 32 }
## Functions
bool | IsSnowLineSet (void)
| Has a snow line table already been loaded.
void | SetSnowLine (byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS])
| Set a variable snow line, as loaded from a newgrf file.
byte | GetSnowLine (void)
| Get the current snow line, either variable or static.
byte | HighestSnowLine (void)
| Get the highest possible snow line height, either variable or static.
byte | LowestSnowLine (void)
| Get the lowest possible snow line height, either variable or static.
void | ClearSnowLine (void)
| Clear the variable snow line table and free the memory.
uint | GetPartialZ (int x, int y, Slope corners)
| Determines height at given coordinate of a slope.
uint | GetSlopeZ (int x, int y)
void | GetSlopeZOnEdge (Slope tileh, DiagDirection edge, int *z1, int *z2)
| Determine the Z height of the corners of a specific tile edge.
int | GetSlopeZInCorner (Slope tileh, Corner corner)
| Determine the Z height of a corner relative to TileZ.
Slope | GetFoundationSlope (TileIndex tile, uint *z)
| Get slope of a tile on top of a (possible) foundation If a tile does not have a foundation, the function returns the same as GetTileSlope.
static Point | RemapCoords (int x, int y, int z)
static Point | RemapCoords2 (int x, int y)
uint | ApplyFoundationToSlope (Foundation f, Slope *s)
| Applies a foundation to a slope.
void | DrawFoundation (TileInfo *ti, Foundation f)
| Draw foundation f at tile ti.
void | DoClearSquare (TileIndex tile)
void | RunTileLoop ()
void | InitializeLandscape ()
void | GenerateLandscape (byte mode)

## Detailed Description

Functions related to OTTD's landscape.

Definition in file landscape.h.

## Enumeration Type Documentation

anonymous enum

Enumerator:

  SNOW_LINE_MONTHS | Number of months in the snow line table.
  SNOW_LINE_DAYS | Number of days in each month in the snow line table.

Definition at line 13 of file landscape.h.

## Function Documentation

uint ApplyFoundationToSlope | ( | Foundation | f,
|  | Slope * | s |
| ) |  |  |

Applies a foundation to a slope.

Precondition:
  Foundation and slope must be valid combined.

Parameters:

  | f | The Foundation.
  | s | The Slope to modify.

Returns:
  Increment to the tile Z coordinate.

Definition at line 81 of file landscape.cpp.

References FOUNDATION_INCLINED_X, FOUNDATION_INCLINED_Y, FOUNDATION_STEEP_BOTH, FOUNDATION_STEEP_LOWER, GetHalftileFoundationCorner(), GetHighestSlopeCorner(), GetRailFoundationCorner(), HalftileSlope(), IsFoundation(), IsLeveledFoundation(), IsNonContinuousFoundation(), IsSpecialRailFoundation(), IsSteepSlope(), OppositeCorner(), SLOPE_FLAT, SLOPE_NE, SLOPE_NW, SLOPE_SE, SLOPE_SW, SlopeWithOneCornerRaised(), SlopeWithThreeCornersRaised(), and TILE_HEIGHT.

Referenced by CheckBridgeSlopeNorth(), CheckBridgeSlopeSouth(), DrawCatenaryRailway(), DrawFoundation(), FloodHalftile(), GetBridgeHeight(), GetFoundationSlope(), HasBridgeFlatRamp(), and TestAutoslopeOnRailTile().

void DrawFoundation | ( | TileInfo * | ti,
|  | Foundation | f |
| ) |  |  |

Draw foundation f at tile ti.

Updates ti.

Parameters:

  | ti | Tile to draw foundation on
  | f | Foundation to draw

Definition at line 372 of file landscape.cpp.

References AddSortableSpriteToDraw(), ApplyFoundationToSlope(), FOUNDATION_INCLINED_X, FOUNDATION_INCLINED_Y, FOUNDATION_STEEP_BOTH, FOUNDATION_STEEP_LOWER, GetFoundationSlope(), GetHalftileFoundationCorner(), GetHighestSlopeCorner(), GetRailFoundationCorner(), IsFoundation(), IsInclinedFoundation(), IsLeveledFoundation(), IsNonContinuousFoundation(), IsSpecialRailFoundation(), IsSteepSlope(), OffsetGroundSprite(), SLOPE_EW, SLOPE_NE, SLOPE_NS, SLOPE_STEEP, SLOPE_SW, SlopeWithOneCornerRaised(), SlopeWithThreeCornersRaised(), TileInfo::tile, TILE_HEIGHT, TileInfo::tileh, TileInfo::x, TileInfo::y, and TileInfo::z.

Referenced by DrawRoadBits(), DrawTile_Road(), DrawTile_Town(), DrawTile_TunnelBridge(), and DrawTrackBits().

Slope GetFoundationSlope | ( | TileIndex | tile,
|  | uint * | z |
| ) |  |  |

Get slope of a tile on top of a (possible) foundation If a tile does not have a foundation, the function returns the same as GetTileSlope.

Parameters:

  | tile | The tile of interest.
  | z | returns the z of the foundation slope. (Can be NULL, if not needed)

Returns:
  The slope on top of the foundation.

Definition at line 324 of file landscape.cpp.

References ApplyFoundationToSlope(), TileTypeProcs::get_foundation_proc, GetTileSlope(), and GetTileType().

Referenced by DrawFoundation(), IsPossibleCrossing(), IsRoadAllowedHere(), and TileLoop_Water().

uint GetPartialZ | ( | int | x,
|  | int | y,
|  | Slope | corners |
| ) |  |  |

Determines height at given coordinate of a slope.

Parameters:

  | x | x coordinate
  | y | y coordinate
  | corners | slope to examine

Returns:
  height of given point of given slope

Definition at line 134 of file landscape.cpp.

References GetHalftileSlopeCorner(), GetSlopeMaxZ(), IsHalftileSlope(), RemoveHalftileSlope(), SLOPE_E, SLOPE_ELEVATED, SLOPE_ENW, SLOPE_EW, SLOPE_N, SLOPE_NE, SLOPE_NS, SLOPE_NW, SLOPE_NWS, SLOPE_S, SLOPE_SE, SLOPE_SEN, SLOPE_STEEP_E, SLOPE_STEEP_N, SLOPE_STEEP_S, SLOPE_STEEP_W, SLOPE_SW, SLOPE_W, and SLOPE_WSE.

int GetSlopeZInCorner | ( | Slope | tileh,
|  | Corner | corner |
| ) |  |  |

Determine the Z height of a corner relative to TileZ.

Precondition:
  The slope must not be a halftile slope.

Parameters:

  | tileh | The slope.
  | corner | The corner.

Returns:
  Z position of corner relative to TileZ.

Definition at line 277 of file landscape.cpp.

References IsHalftileSlope(), SlopeWithOneCornerRaised(), SteepSlope(), and TILE_HEIGHT.

Referenced by DrawTrackFence_NS_1(), DrawTrackFence_NS_2(), DrawTrackFence_WE_1(), DrawTrackFence_WE_2(), AITile::GetCornerHeight(), and TestAutoslopeOnRailTile().

void GetSlopeZOnEdge | ( | Slope | tileh,
|  | DiagDirection | edge,
|  | int * | z1,
|  | int * | z2 |
| ) |  |  |

Determine the Z height of the corners of a specific tile edge.

Note:
  If a tile has a non-continuous halftile foundation, a corner can have different heights wrt. it's edges.

Precondition:
  z1 and z2 must be initialized (typ. with TileZ). The corner heights just get added.

Parameters:

  | tileh | The slope of the tile.
  | edge | The edge of interest.
  | z1 | Gets incremented by the height of the first corner of the edge. (near corner wrt. the camera)
  | z2 | Gets incremented by the height of the second corner of the edge. (far corner wrt. the camera)

Definition at line 295 of file landscape.cpp.

References GetHalftileSlopeCorner(), IsHalftileSlope(), RemoveHalftileSlope(), SLOPE_E, SLOPE_N, SLOPE_S, SLOPE_STEEP_E, SLOPE_STEEP_N, SLOPE_STEEP_S, SLOPE_STEEP_W, SLOPE_W, SlopeWithOneCornerRaised(), and TILE_HEIGHT.

Referenced by DrawBridgePillars().