|
OpenTTD
|
Functions related to the landscape (slopes etc.). More...
#include "stdafx.h"#include "heightmap.h"#include "clear_map.h"#include "spritecache.h"#include "viewport_func.h"#include "command_func.h"#include "landscape.h"#include "void_map.h"#include "tgp.h"#include "genworld.h"#include "fios.h"#include "date_func.h"#include "water.h"#include "effectvehicle_func.h"#include "landscape_type.h"#include "animated_tile_func.h"#include "core/random_func.hpp"#include "object_base.h"#include "company_func.h"#include "pathfinder/npf/aystar.h"#include "saveload/saveload.h"#include "framerate_type.h"#include <list>#include <set>#include "table/strings.h"#include "table/sprites.h"#include "safeguards.h"#include "table/genland.h"Go to the source code of this file.
Macros | |
| #define | SET_MARK(x) marks.insert(x) |
| #define | IS_MARKED(x) (marks.find(x) != marks.end()) |
Functions | |
| Point | InverseRemapCoords2 (int x, int y, bool clamp_to_map, bool *clamped) |
| Map 2D viewport or smallmap coordinate to 3D world or tile coordinate. More... | |
| uint | ApplyFoundationToSlope (Foundation f, Slope *s) |
| Applies a foundation to a slope. More... | |
| uint | GetPartialPixelZ (int x, int y, Slope corners) |
| Determines height at given coordinate of a slope. More... | |
| int | GetSlopePixelZ (int x, int y) |
| int | GetSlopePixelZOutsideMap (int x, int y) |
Return world z coordinate of a given point of a tile, also for tiles outside the map (virtual "black" tiles). More... | |
| int | GetSlopeZInCorner (Slope tileh, Corner corner) |
| Determine the Z height of a corner relative to TileZ. More... | |
| void | GetSlopePixelZOnEdge (Slope tileh, DiagDirection edge, int *z1, int *z2) |
| Determine the Z height of the corners of a specific tile edge. More... | |
| 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 GetTileSlope. More... | |
| bool | HasFoundationNW (TileIndex tile, Slope slope_here, uint z_here) |
| bool | HasFoundationNE (TileIndex tile, Slope slope_here, uint z_here) |
| void | DrawFoundation (TileInfo *ti, Foundation f) |
| Draw foundation f at tile ti. More... | |
| void | DoClearSquare (TileIndex tile) |
| TrackStatus | GetTileTrackStatus (TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) |
| Returns information about trackdirs and signal states. More... | |
| void | ChangeTileOwner (TileIndex tile, Owner old_owner, Owner new_owner) |
| Change the owner of a tile. More... | |
| void | GetTileDesc (TileIndex tile, TileDesc *td) |
| bool | IsSnowLineSet () |
| Has a snow line table already been loaded. More... | |
| void | SetSnowLine (byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]) |
| Set a variable snow line, as loaded from a newgrf file. More... | |
| byte | GetSnowLine () |
| Get the current snow line, either variable or static. More... | |
| byte | HighestSnowLine () |
| Get the highest possible snow line height, either variable or static. More... | |
| byte | LowestSnowLine () |
| Get the lowest possible snow line height, either variable or static. More... | |
| void | ClearSnowLine () |
| Clear the variable snow line table and free the memory. | |
| CommandCost | CmdLandscapeClear (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Clear a piece of landscape. More... | |
| CommandCost | CmdClearArea (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Clear a big piece of landscape. More... | |
| void | RunTileLoop () |
| Gradually iterate over all tiles on the map, calling their TileLoopProcs once every 256 ticks. | |
| void | InitializeLandscape () |
| static void | GenerateTerrain (int type, uint flag) |
| static void | CreateDesertOrRainForest () |
| static bool | FindSpring (TileIndex tile, void *user_data) |
| Find the spring of a river. More... | |
| static bool | MakeLake (TileIndex tile, void *user_data) |
| Make a connected lake; fill all tiles in the circular tile search that are connected. More... | |
| static bool | FlowsDown (TileIndex begin, TileIndex end) |
| Check whether a river at begin could (logically) flow down to end. More... | |
| static int32 | River_EndNodeCheck (const AyStar *aystar, const OpenListNode *current) |
| static int32 | River_CalculateG (AyStar *aystar, AyStarNode *current, OpenListNode *parent) |
| static int32 | River_CalculateH (AyStar *aystar, AyStarNode *current, OpenListNode *parent) |
| static void | River_GetNeighbours (AyStar *aystar, OpenListNode *current) |
| static void | River_FoundEndNode (AyStar *aystar, OpenListNode *current) |
| static uint | River_Hash (uint tile, uint dir) |
| Simple hash function for river tiles to be used by AyStar. More... | |
| static void | BuildRiver (TileIndex begin, TileIndex end) |
| Actually build the river between the begin and end tiles using AyStar. More... | |
| static bool | FlowRiver (TileIndex spring, TileIndex begin) |
| Try to flow the river down from a given begin. More... | |
| static void | CreateRivers () |
| Actually (try to) create some rivers. | |
| void | GenerateLandscape (byte mode) |
| void | OnTick_Town () |
| void | OnTick_Trees () |
| void | OnTick_Station () |
| void | OnTick_Industry () |
| void | OnTick_Companies () |
| Called every tick for updating some company info. More... | |
| void | OnTick_LinkGraph () |
| Spawn or join a link graph job or compress a link graph if any link graph is due to do so. | |
| void | CallLandscapeTick () |
Variables | |
| const TileTypeProcs | _tile_type_clear_procs |
| const TileTypeProcs | _tile_type_rail_procs |
| const TileTypeProcs | _tile_type_road_procs |
| const TileTypeProcs | _tile_type_town_procs |
| const TileTypeProcs | _tile_type_trees_procs |
| const TileTypeProcs | _tile_type_station_procs |
| const TileTypeProcs | _tile_type_water_procs |
| const TileTypeProcs | _tile_type_void_procs |
| const TileTypeProcs | _tile_type_industry_procs |
| const TileTypeProcs | _tile_type_tunnelbridge_procs |
| const TileTypeProcs | _tile_type_object_procs |
| const TileTypeProcs *const | _tile_type_procs [16] |
| Tile callback functions for each type of tile. More... | |
| const byte | _slope_to_sprite_offset [32] |
| landscape slope => sprite More... | |
| static SnowLine * | _snow_line = NULL |
| Description of the snow line throughout the year. More... | |
| TileIndex | _cur_tileloop_tile |
| static const byte | _genterrain_tbl_1 [5] = { 10, 22, 33, 37, 4 } |
| static const byte | _genterrain_tbl_2 [5] = { 0, 0, 0, 0, 33 } |
| static const uint | RIVER_HASH_SIZE = 8 |
| The number of bits the hash for river finding should have. | |
Functions related to the landscape (slopes etc.).
Definition in file landscape.cpp.
| uint ApplyFoundationToSlope | ( | Foundation | f, |
| Slope * | s | ||
| ) |
Applies a foundation to a slope.
| f | The Foundation. |
| s | The Slope to modify. |
Definition at line 164 of file landscape.cpp.
References FOUNDATION_INCLINED_X, FOUNDATION_STEEP_BOTH, GetHalftileFoundationCorner(), GetHighestSlopeCorner(), GetRailFoundationCorner(), HalftileSlope(), IsFoundation(), IsLeveledFoundation(), IsNonContinuousFoundation(), IsSpecialRailFoundation(), IsSteepSlope(), OppositeCorner(), SLOPE_FLAT, and SlopeWithThreeCornersRaised().
Referenced by ApplyPixelFoundationToSlope(), GetBridgeHeight(), GetFoundationSlope(), HasBridgeFlatRamp(), and TestAutoslopeOnRailTile().
Actually build the river between the begin and end tiles using AyStar.
| begin | The begin of the river. |
| end | The end of the river. |
Definition at line 1163 of file landscape.cpp.
Change the owner of a tile.
| tile | Tile to change |
| old_owner | Current owner of the tile |
| new_owner | New owner of the tile |
Definition at line 602 of file landscape.cpp.
References GetTileType().
| CommandCost CmdClearArea | ( | TileIndex | tile, |
| DoCommandFlag | flags, | ||
| uint32 | p1, | ||
| uint32 | p2, | ||
| const char * | text | ||
| ) |
Clear a big piece of landscape.
| tile | end tile of area dragging |
| flags | of operation to conduct |
| p1 | start tile of area dragging |
| p2 | various bitstuffed data. bit 0: Whether to use the Orthogonal (0) or Diagonal (1) iterator. |
| text | unused |
Definition at line 744 of file landscape.cpp.
References _current_company, CMD_ERROR, DC_AUTO, DC_BANKRUPT, EXPENSES_CONSTRUCTION, GetAvailableMoneyForCommand(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), and MapSize().
| CommandCost CmdLandscapeClear | ( | TileIndex | tile, |
| DoCommandFlag | flags, | ||
| uint32 | p1, | ||
| uint32 | p2, | ||
| const char * | text | ||
| ) |
Clear a piece of landscape.
| tile | tile to clear |
| flags | of operation to conduct |
| p1 | unused |
| p2 | unused |
| text | unused |
Definition at line 694 of file landscape.cpp.
References CommandCost::AddCost(), DC_AUTO, DC_FORCE_CLEAR_TILE, EXPENSES_CONSTRUCTION, GetWaterClass(), HasTileWaterClass(), IsCoastTile(), IsTileOnWater(), IsWaterTile(), return_cmd_error, and WATER_CLASS_CANAL.
| 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 472 of file landscape.cpp.
References IsFoundation().
Referenced by ApplyPixelFoundationToSlope(), and DrawTile_Road().
|
static |
Find the spring of a river.
| tile | The tile to consider for being the spring. |
| user_data | Ignored data. |
Definition at line 1020 of file landscape.cpp.
References _settings_game, GameSettings::game_creation, IsTileFlat(), IsWaterTile(), and GameCreationSettings::landscape.
Referenced by CreateRivers().
Try to flow the river down from a given begin.
| spring | The springing point of the river. |
| begin | The begin point we are looking from; somewhere down hill from the spring. |
Definition at line 1189 of file landscape.cpp.
Referenced by CreateRivers().
Check whether a river at begin could (logically) flow down to end.
| begin | The origin of the flow. |
| end | The destination of the flow. |
Definition at line 1082 of file landscape.cpp.
| 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 1295 of file landscape.cpp.
References _settings_game, GameSettings::game_creation, and GameCreationSettings::landscape.
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 424 of file landscape.cpp.
References ApplyFoundationToSlope(), GetTileSlope(), and GetTileType().
Referenced by IsPossibleCrossing(), IsRoadAllowedHere(), and TileLoop_Water().
| uint GetPartialPixelZ | ( | 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 217 of file landscape.cpp.
| void GetSlopePixelZOnEdge | ( | 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 395 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.
| int GetSlopePixelZOutsideMap | ( | int | x, |
| int | y | ||
| ) |
Return world z coordinate of a given point of a tile, also for tiles outside the map (virtual "black" tiles).
| x | World X coordinate in tile "units", may be ouside the map. |
| y | World Y coordinate in tile "units", may be ouside the map. |
Definition at line 359 of file landscape.cpp.
Determine the Z height of a corner relative to TileZ.
| tileh | The slope. |
| corner | The corner. |
Definition at line 377 of file landscape.cpp.
Referenced by GetSlopePixelZInCorner().
| TrackStatus GetTileTrackStatus | ( | TileIndex | tile, |
| TransportType | mode, | ||
| uint | sub_mode, | ||
| DiagDirection | side | ||
| ) |
Returns information about trackdirs and signal states.
If there is any trackbit at 'side', return all trackdirbits. For TRANSPORT_ROAD, return no trackbits if there is no roadbit (of given subtype) at given side.
| tile | tile to get info about |
| mode | transport type |
| sub_mode | for TRANSPORT_ROAD, roadtypes to check |
| side | side we are entering from, INVALID_DIAGDIR to return all trackbits |
Definition at line 591 of file landscape.cpp.
References TileTypeProcs::get_tile_track_status_proc, and GetTileType().
Referenced by CheckRoadBlockedForOvertaking(), CYapfFollowShipT< Types >::CheckShipReverse(), DisasterTick_Submarine(), GenericPlaceSignals(), GetDriveableTrackdirBits(), MaskWireBits(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::QueryNewTileTrackStatus(), RoadFindPathToDest(), CYapfFollowRoadT< Types >::SetOriginFromVehiclePos(), RoadVehicle::TileMayHaveSlopedTrack(), TrainCheckIfLineEnds(), and YapfRoadVehicleFindNearestDepot().
| Point InverseRemapCoords2 | ( | int | x, |
| int | y, | ||
| bool | clamp_to_map, | ||
| bool * | clamped | ||
| ) |
Map 2D viewport or smallmap coordinate to 3D world or tile coordinate.
Function takes into account height of tiles and foundations.
| x | X viewport 2D coordinate. | |
| y | Y viewport 2D coordinate. | |
| clamp_to_map | Clamp the coordinate outside of the map to the closest, non-void tile within the map. | |
| [out] | clamped | Whether coordinates were clamped. |
Definition at line 105 of file landscape.cpp.
Referenced by ClampViewportToMap(), SmallMapWindow::DrawMapIndicators(), SmallMapWindow::SmallMapCenterOnCurrentPos(), and TranslateXYToTileCoord().
|
static |
Make a connected lake; fill all tiles in the circular tile search that are connected.
| tile | The tile to consider for lake making. |
| user_data | The height of the lake. |
Definition at line 1056 of file landscape.cpp.
| void OnTick_Companies | ( | ) |
Called every tick for updating some company info.
Definition at line 708 of file company_cmd.cpp.
|
static |
Simple hash function for river tiles to be used by AyStar.
| tile | The tile to hash. |
| dir | The unused direction. |
Definition at line 1153 of file landscape.cpp.
References GB(), RIVER_HASH_SIZE, TileHash(), TileX(), and TileY().
| const byte _slope_to_sprite_offset[32] |
landscape slope => sprite
Referenced by SlopeToSpriteOffset().
| const TileTypeProcs* const _tile_type_procs[16] |
Tile callback functions for each type of tile.
Definition at line 62 of file landscape.cpp.