Data Structures | Functions | Variables

landscape.h File Reference

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

#include "core/geometry_type.hpp"
#include "tile_cmd.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...

Functions

bool IsSnowLineSet ()
 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 ()
 Get the current snow line, either variable or static.
byte HighestSnowLine ()
 Get the highest possible snow line height, either variable or static.
byte LowestSnowLine ()
 Get the lowest possible snow line height, either variable or static.
void ClearSnowLine ()
 Clear the variable snow line table and free the memory.
int GetSlopeZInCorner (Slope tileh, Corner corner)
 Determine the Z height of a corner relative to TileZ.
Slope GetFoundationSlope (TileIndex tile, int *z=NULL)
 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 GetTilePixelSlope.
uint GetPartialPixelZ (int x, int y, Slope corners)
 Determines height at given coordinate of a slope.
int GetSlopePixelZ (int x, int y)
void GetSlopePixelZOnEdge (Slope tileh, DiagDirection edge, int *z1, int *z2)
 Determine the Z height of the corners of a specific tile edge.
static int GetSlopePixelZInCorner (Slope tileh, Corner corner)
 Determine the Z height of a corner relative to TileZ.
static Slope GetFoundationPixelSlope (TileIndex tile, int *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 GetTilePixelSlope.
static Point RemapCoords (int x, int y, int z)
 Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap.
static Point RemapCoords2 (int x, int y)
 Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap.
static Point InverseRemapCoords (int x, int y)
 Map 2D viewport or smallmap coordinate to 3D world or tile coordinate.
uint ApplyFoundationToSlope (Foundation f, Slope *s)
 Applies a foundation to a slope.
static uint ApplyPixelFoundationToSlope (Foundation f, Slope *s)
 Applies a foundation to a slope.
void DrawFoundation (TileInfo *ti, Foundation f)
 Draw foundation f at tile ti.
bool HasFoundationNW (TileIndex tile, Slope slope_here, uint z_here)
bool HasFoundationNE (TileIndex tile, Slope slope_here, uint z_here)
void DoClearSquare (TileIndex tile)
void RunTileLoop ()
 Gradually iterate over all tiles on the map, calling their TileLoopProcs once every 256 ticks.
void InitializeLandscape ()
void GenerateLandscape (byte mode)

Variables

static const uint SNOW_LINE_MONTHS = 12
 Number of months in the snow line table.
static const uint SNOW_LINE_DAYS = 32
 Number of days in each month in the snow line table.

Detailed Description

Functions related to OTTD's landscape.

Definition in file landscape.h.


Function Documentation

uint ApplyFoundationToSlope ( Foundation  f,
Slope s 
)
static uint ApplyPixelFoundationToSlope ( Foundation  f,
Slope s 
) [inline, static]

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 127 of file landscape.h.

References ApplyFoundationToSlope(), and TILE_HEIGHT.

Referenced by DrawFoundation().

void DrawFoundation ( TileInfo ti,
Foundation  f 
)
void GenerateLandscape ( byte  mode  ) 
static Slope GetFoundationPixelSlope ( TileIndex  tile,
int *  z 
) [inline, static]

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 GetTilePixelSlope.

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 67 of file landscape.h.

References GetFoundationSlope(), and TILE_HEIGHT.

Referenced by DrawFoundation().

Slope GetFoundationSlope ( TileIndex  tile,
int *  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 GetTilePixelSlope.

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 338 of file landscape.cpp.

References ApplyFoundationToSlope(), GetTileSlope(), and GetTileType().

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

uint GetPartialPixelZ ( 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 148 of file landscape.cpp.

References GetHalftileSlopeCorner(), GetSlopeMaxPixelZ(), 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.

Referenced by DrawRoadBits().

static int GetSlopePixelZInCorner ( Slope  tileh,
Corner  corner 
) [inline, static]

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 54 of file landscape.h.

References GetSlopeZInCorner(), and TILE_HEIGHT.

Referenced by DrawTrackFence_NS_1(), DrawTrackFence_NS_2(), DrawTrackFence_WE_1(), and DrawTrackFence_WE_2().

void GetSlopePixelZOnEdge ( 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. its 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 309 of file landscape.cpp.

References GetHalftileSlopeCorner(), IsHalftileSlope(), RemoveHalftileSlope(), SLOPE_STEEP_E, SLOPE_STEEP_N, SLOPE_STEEP_W, SlopeWithOneCornerRaised(), and TILE_HEIGHT.

Referenced by DrawBridgePillars().

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 291 of file landscape.cpp.

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

Referenced by GetSlopePixelZInCorner(), and TestAutoslopeOnRailTile().

static Point InverseRemapCoords ( int  x,
int  y 
) [inline, static]

Map 2D viewport or smallmap coordinate to 3D world or tile coordinate.

Function assumes z == 0. For other values of z, add z to y before the call.

Parameters:
x X coordinate of the 2D coordinate.
y Y coordinate of the 2D coordinate.
Returns:
X and Y components of equivalent world or tile coordinate.
Note:
Inverse of RemapCoords function. Smaller values may get rounded.

Definition at line 112 of file landscape.h.

Referenced by SmallMapWindow::DrawMapIndicators(), and SmallMapWindow::SetNewScroll().

static Point RemapCoords ( int  x,
int  y,
int  z 
) [inline, static]

Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap.

Parameters:
x X world or tile coordinate (runs in SW direction in the 2D view).
y Y world or tile coordinate (runs in SE direction in the 2D view).
z Z world or tile coordinate (runs in N direction in the 2D view).
Returns:
Equivalent coordinate in the 2D view.
See also:
RemapCoords2

Definition at line 83 of file landscape.h.

Referenced by AddCombinedSprite(), AddSortableSpriteToDraw(), AddTileSpriteToDraw(), CcStartStopVehicle(), DrawCommonTileSeqInGUI(), DrawGroundSpriteAt(), MarkTileDirtyByTile(), SmallMapWindow::OnClick(), RemapCoords2(), SetSelectionTilesDirty(), SetupScreenshotViewport(), ShowCostOrIncomeAnimation(), ShowFeederIncomeAnimation(), ShowFillingPercent(), Sign::UpdateVirtCoord(), VehicleUpdateViewport(), and ViewportDrawBoundingBoxes().

static Point RemapCoords2 ( int  x,
int  y 
) [inline, static]

Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap.

Same as RemapCoords, except the Z coordinate is read from the map.

Parameters:
x X world or tile coordinate (runs in SW direction in the 2D view).
y Y world or tile coordinate (runs in SE direction in the 2D view).
Returns:
Equivalent coordinate in the 2D view.
See also:
RemapCoords

Definition at line 99 of file landscape.h.

References RemapCoords().

Referenced by Waypoint::UpdateVirtCoord(), Town::UpdateVirtCoord(), and Station::UpdateVirtCoord().