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. | |
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) |
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. | |
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 () |
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. |
Functions related to OTTD's landscape.
Definition in file landscape.h.
uint ApplyFoundationToSlope | ( | Foundation | f, | |
Slope * | s | |||
) |
Applies a foundation to a slope.
f | The Foundation. | |
s | The Slope to modify. |
Definition at line 95 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.
ti | Tile to draw foundation on | |
f | Foundation to draw |
Definition at line 386 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().
void GenerateLandscape | ( | byte | mode | ) |
Number of steps of landscape generation
< Loading a heightmap
< Terragenesis generator
< Original generator
< Extra steps needed for tropic landscape
< Extra steps for other landscapes
Definition at line 918 of file landscape.cpp.
References _settings_game, GameSettings::construction, CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY, GameSettings::difficulty, FixSlopes(), ConstructionSettings::freeform_edges, GameSettings::game_creation, GB(), GenerateTerrainPerlin(), GWM_HEIGHTMAP, GWP_LANDSCAPE, IncreaseGeneratingWorldProgress(), GameCreationSettings::land_generator, GameCreationSettings::landscape, LG_TERRAGENESIS, LoadHeightmap(), MakeVoid(), MapSizeX(), MapSizeY(), SmallFiosItem::name, DifficultySettings::quantity_sea_lakes, ScaleByMapSize(), SetGeneratingWorldProgress(), DifficultySettings::terrain_type, and TileXY().
Referenced by _GenerateWorld().
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.
tile | The tile of interest. | |
z | returns the z of the foundation slope. (Can be NULL, if not needed) |
Definition at line 338 of file landscape.cpp.
References ApplyFoundationToSlope(), 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.
x | x coordinate | |
y | y coordinate | |
corners | slope to examine |
Definition at line 148 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.
Referenced by DrawRoadBits().
Determine the Z height of a corner relative to TileZ.
tileh | The slope. | |
corner | The corner. |
Definition at line 291 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.
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_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().
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.
x | X coordinate of the 2D coordinate. | |
y | Y coordinate of the 2D coordinate. |
Definition at line 81 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.
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). |
Definition at line 52 of file landscape.h.
Referenced by AddCombinedSprite(), AddSortableSpriteToDraw(), AddTileSpriteToDraw(), CcStartStopVehicle(), DrawCommonTileSeqInGUI(), DrawGroundSpriteAt(), MarkTileDirtyByTile(), SmallMapWindow::OnClick(), RemapCoords2(), SmallMapWindow::RemapTile(), ShowCostOrIncomeAnimation(), ShowFeederIncomeAnimation(), ShowFillingPercent(), Sign::UpdateVirtCoord(), VehicleMove(), 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.
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). |
Definition at line 68 of file landscape.h.
References RemapCoords().
Referenced by ErrmsgWindow::OnInitialPosition(), SetSelectionTilesDirty(), Waypoint::UpdateVirtCoord(), Town::UpdateVirtCoord(), and Station::UpdateVirtCoord().