Functions related to slopes. More...
#include "core/math_func.hpp"
#include "slope_type.h"
#include "direction_type.h"
#include "tile_type.h"
Go to the source code of this file.
Functions | |
static bool | IsValidCorner (Corner corner) |
Rangecheck for Corner enumeration. | |
static bool | IsSteepSlope (Slope s) |
Checks if a slope is steep. | |
static bool | IsHalftileSlope (Slope s) |
Checks for non-continuous slope on halftile foundations. | |
static Slope | RemoveHalftileSlope (Slope s) |
Removes a halftile slope from a slope. | |
static Slope | ComplementSlope (Slope s) |
Return the complement of a slope. | |
static bool | IsSlopeWithOneCornerRaised (Slope s) |
Tests if a specific slope has exactly one corner raised. | |
static Slope | SlopeWithOneCornerRaised (Corner corner) |
Returns the slope with a specific corner raised. | |
static bool | HasSlopeHighestCorner (Slope s) |
Tests if a slope has a highest corner (i.e. | |
static Corner | GetHighestSlopeCorner (Slope s) |
Returns the highest corner of a slope (one corner raised or a steep slope). | |
static Corner | GetHalftileSlopeCorner (Slope s) |
Returns the leveled halftile of a halftile slope. | |
static uint | GetSlopeMaxZ (Slope s) |
Returns the height of the highest corner of a slope relative to TileZ (= minimal height). | |
static Corner | OppositeCorner (Corner corner) |
Returns the opposite corner. | |
static bool | IsSlopeWithThreeCornersRaised (Slope s) |
Tests if a specific slope has exactly three corners raised. | |
static Slope | SlopeWithThreeCornersRaised (Corner corner) |
Returns the slope with all except one corner raised. | |
static Slope | SteepSlope (Corner corner) |
Returns a specific steep slope. | |
static bool | IsInclinedSlope (Slope s) |
Tests if a specific slope is an inclined slope. | |
static DiagDirection | GetInclinedSlopeDirection (Slope s) |
Returns the direction of an inclined slope. | |
static Slope | InclinedSlope (DiagDirection dir) |
Returns the slope that is inclined in a specific direction. | |
static Slope | HalftileSlope (Slope s, Corner corner) |
Adds a halftile slope to a slope. | |
static bool | IsFoundation (Foundation f) |
Tests for FOUNDATION_NONE. | |
static bool | IsLeveledFoundation (Foundation f) |
Tests if the foundation is a leveled foundation. | |
static bool | IsInclinedFoundation (Foundation f) |
Tests if the foundation is an inclined foundation. | |
static bool | IsNonContinuousFoundation (Foundation f) |
Tests if a foundation is a non-continuous foundation, i.e. | |
static Corner | GetHalftileFoundationCorner (Foundation f) |
Returns the halftile corner of a halftile-foundation. | |
static bool | IsSpecialRailFoundation (Foundation f) |
Tests if a foundation is a special rail foundation for single horizontal/vertical track. | |
static Corner | GetRailFoundationCorner (Foundation f) |
Returns the track corner of a special rail foundation. | |
static Foundation | FlatteningFoundation (Slope s) |
Returns the foundation needed to flatten a slope. | |
static Foundation | InclinedFoundation (Axis axis) |
Returns the along a specific axis inclined foundation. | |
static Foundation | HalftileFoundation (Corner corner) |
Returns the halftile foundation for single horizontal/vertical track. | |
static Foundation | SpecialRailFoundation (Corner corner) |
Returns the special rail foundation for single horizontal/vertical track. | |
static uint | SlopeToSpriteOffset (Slope s) |
Returns the Sprite offset for a given Slope. |
Functions related to slopes.
Definition in file slope_func.h.
Return the complement of a slope.
This method returns the complement of a slope. The complement of a slope is a slope with raised corner which aren't raised in the given slope.
s | The Slope to get the complement. |
Definition at line 78 of file slope_func.h.
References IsHalftileSlope(), IsSteepSlope(), and SLOPE_ELEVATED.
Referenced by CmdBuildTunnel(), DrawTrackBits(), AITile::GetComplementSlope(), IsRoadAllowedHere(), IsSlopeWithThreeCornersRaised(), and SlopeWithThreeCornersRaised().
static Foundation FlatteningFoundation | ( | Slope | s | ) | [inline, static] |
Returns the foundation needed to flatten a slope.
The returned foundation is either FOUNDATION_NONE if the tile was already flat, or FOUNDATION_LEVELED.
s | The current Slope. |
Definition at line 360 of file slope_func.h.
References FOUNDATION_LEVELED, FOUNDATION_NONE, and SLOPE_FLAT.
Referenced by GetFoundation_Town().
static Corner GetHalftileFoundationCorner | ( | Foundation | f | ) | [inline, static] |
Returns the halftile corner of a halftile-foundation.
f | The Foundation. |
Definition at line 324 of file slope_func.h.
References FOUNDATION_HALFTILE_N, FOUNDATION_HALFTILE_W, and IsInsideMM().
Referenced by ApplyFoundationToSlope(), DrawFoundation(), and DrawTrackBits().
Returns the leveled halftile of a halftile slope.
s | The Slope. |
Definition at line 150 of file slope_func.h.
References IsHalftileSlope().
Referenced by DrawAutorailSelection(), DrawCatenaryRailway(), DrawTileSelection(), DrawTileSelectionRect(), GetPartialZ(), and GetSlopeZOnEdge().
Returns the highest corner of a slope (one corner raised or a steep slope).
s | The Slope. |
Definition at line 128 of file slope_func.h.
References RemoveHalftileSlope(), SLOPE_E, SLOPE_N, SLOPE_S, SLOPE_STEEP_E, SLOPE_STEEP_N, SLOPE_STEEP_S, SLOPE_STEEP_W, and SLOPE_W.
Referenced by ApplyFoundationToSlope(), DrawFoundation(), DrawTrackBits(), FloodHalftile(), and GetRailFoundation().
static DiagDirection GetInclinedSlopeDirection | ( | Slope | s | ) | [inline, static] |
Returns the direction of an inclined slope.
s | A Slope |
Definition at line 230 of file slope_func.h.
References DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_SE, DIAGDIR_SW, INVALID_DIAGDIR, SLOPE_NE, SLOPE_NW, SLOPE_SE, and SLOPE_SW.
Referenced by CmdBuildDock(), CmdBuildLock(), CmdBuildTunnel(), GetOtherAqueductEnd(), AITunnel::GetOtherTunnelEnd(), BuildDocksToolbarWindow::OnPlaceObject(), and BuildDocksToolbarWindow::OnPlacePresize().
static Corner GetRailFoundationCorner | ( | Foundation | f | ) | [inline, static] |
Returns the track corner of a special rail foundation.
f | The Foundation. |
Definition at line 347 of file slope_func.h.
References FOUNDATION_RAIL_W, and IsSpecialRailFoundation().
Referenced by ApplyFoundationToSlope(), and DrawFoundation().
static uint GetSlopeMaxZ | ( | Slope | s | ) | [inline, static] |
Returns the height of the highest corner of a slope relative to TileZ (= minimal height).
s | The Slope. |
Definition at line 162 of file slope_func.h.
References IsSteepSlope(), SLOPE_FLAT, and TILE_HEIGHT.
Referenced by AutoslopeCheckForEntranceEdge(), and GetPartialZ().
static Foundation HalftileFoundation | ( | Corner | corner | ) | [inline, static] |
Returns the halftile foundation for single horizontal/vertical track.
corner | The Corner with the track. |
Definition at line 382 of file slope_func.h.
References FOUNDATION_HALFTILE_W, and IsValidCorner().
Referenced by DrawTrackBits(), and GetRailFoundation().
Adds a halftile slope to a slope.
Definition at line 265 of file slope_func.h.
References IsValidCorner(), and SLOPE_HALFTILE.
Referenced by ApplyFoundationToSlope().
static bool HasSlopeHighestCorner | ( | Slope | s | ) | [inline, static] |
Tests if a slope has a highest corner (i.e.
one corner raised or a steep slope).
Note: A halftile slope is ignored.
s | The Slope. |
Definition at line 115 of file slope_func.h.
References IsSlopeWithOneCornerRaised(), IsSteepSlope(), and RemoveHalftileSlope().
static Foundation InclinedFoundation | ( | Axis | axis | ) | [inline, static] |
Returns the along a specific axis inclined foundation.
axis | The Axis. |
Definition at line 371 of file slope_func.h.
References AXIS_X, FOUNDATION_INCLINED_X, and FOUNDATION_INCLINED_Y.
static Slope InclinedSlope | ( | DiagDirection | dir | ) | [inline, static] |
Returns the slope that is inclined in a specific direction.
dir | A DiagDirection |
Definition at line 247 of file slope_func.h.
References DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_SE, DIAGDIR_SW, SLOPE_NE, SLOPE_NW, SLOPE_SE, and SLOPE_SW.
Referenced by AdjustTileh(), and GrowTownWithBridge().
static bool IsFoundation | ( | Foundation | f | ) | [inline, static] |
Tests for FOUNDATION_NONE.
f | Maybe a Foundation. |
Definition at line 278 of file slope_func.h.
References FOUNDATION_NONE.
Referenced by ApplyFoundationToSlope(), and DrawFoundation().
static bool IsHalftileSlope | ( | Slope | s | ) | [inline, static] |
Checks for non-continuous slope on halftile foundations.
s | The given Slope. |
Definition at line 49 of file slope_func.h.
References SLOPE_HALFTILE.
Referenced by ComplementSlope(), DrawAutorailSelection(), DrawCatenaryRailway(), DrawTileSelection(), DrawTileSelectionRect(), GetHalftileSlopeCorner(), GetPartialZ(), GetSlopeZInCorner(), GetSlopeZOnEdge(), and IsSlopeWithThreeCornersRaised().
static bool IsInclinedFoundation | ( | Foundation | f | ) | [inline, static] |
Tests if the foundation is an inclined foundation.
f | The Foundation. |
Definition at line 300 of file slope_func.h.
References FOUNDATION_INCLINED_X, and FOUNDATION_INCLINED_Y.
Referenced by DrawFoundation().
static bool IsInclinedSlope | ( | Slope | s | ) | [inline, static] |
Tests if a specific slope is an inclined slope.
s | The Slope |
Definition at line 219 of file slope_func.h.
References SLOPE_NE, SLOPE_NW, SLOPE_SE, and SLOPE_SW.
Referenced by CmdBuildCanal().
static bool IsLeveledFoundation | ( | Foundation | f | ) | [inline, static] |
Tests if the foundation is a leveled foundation.
f | The Foundation. |
Definition at line 289 of file slope_func.h.
References FOUNDATION_LEVELED.
Referenced by ApplyFoundationToSlope(), and DrawFoundation().
static bool IsNonContinuousFoundation | ( | Foundation | f | ) | [inline, static] |
Tests if a foundation is a non-continuous foundation, i.e.
halftile-foundation or FOUNDATION_STEEP_BOTH.
f | The Foundation. |
Definition at line 311 of file slope_func.h.
References FOUNDATION_HALFTILE_N, FOUNDATION_STEEP_BOTH, and IsInsideMM().
Referenced by ApplyFoundationToSlope(), DrawFoundation(), DrawTrackBits(), and FloodHalftile().
static bool IsSlopeWithOneCornerRaised | ( | Slope | s | ) | [inline, static] |
Tests if a specific slope has exactly one corner raised.
s | The Slope |
Definition at line 90 of file slope_func.h.
References SLOPE_E, SLOPE_N, SLOPE_S, and SLOPE_W.
Referenced by CanPlantTreesOnTile(), CheckRoadSlope(), CmdBuildSingleRail(), CmdPlantTree(), CmdRemoveSingleRail(), DoFloodTile(), FloodHalftile(), GetFloodingBehaviour(), GetRailFoundation(), GetRoadFoundation(), HasSlopeHighestCorner(), IsSlopeWithThreeCornersRaised(), and TestAutoslopeOnRailTile().
static bool IsSlopeWithThreeCornersRaised | ( | Slope | s | ) | [inline, static] |
Tests if a specific slope has exactly three corners raised.
s | The Slope |
Definition at line 186 of file slope_func.h.
References ComplementSlope(), IsHalftileSlope(), IsSlopeWithOneCornerRaised(), and IsSteepSlope().
Referenced by FloodHalftile(), and GetRailFoundation().
static bool IsSpecialRailFoundation | ( | Foundation | f | ) | [inline, static] |
Tests if a foundation is a special rail foundation for single horizontal/vertical track.
f | The Foundation. |
Definition at line 336 of file slope_func.h.
References FOUNDATION_RAIL_N, FOUNDATION_RAIL_W, and IsInsideMM().
Referenced by ApplyFoundationToSlope(), DrawFoundation(), and GetRailFoundationCorner().
static bool IsSteepSlope | ( | Slope | s | ) | [inline, static] |
Checks if a slope is steep.
s | The given Slope. |
Definition at line 38 of file slope_func.h.
References SLOPE_STEEP.
Referenced by ApplyFoundationToSlope(), AutoslopeCheckForEntranceEdge(), CanBuildHouseHere(), CheckBuildableTile(), CheckRailSlope(), CheckRoadSlope(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildTrainDepot(), ComplementSlope(), DrawCatenaryRailway(), DrawFoundation(), DrawTileSelection(), DrawTileSelectionRect(), DrawTrackBits(), FloodHalftile(), GetRailFoundation(), GetRoadFoundation(), GetSlopeMaxZ(), HasSlopeHighestCorner(), IsSlopeWithThreeCornersRaised(), IsValidTileForWaypoint(), LookupWithBuildOnSlopes(), RemoveRoad(), and SearchTileForStatue().
static bool IsValidCorner | ( | Corner | corner | ) | [inline, static] |
Rangecheck for Corner enumeration.
corner | A Corner. |
Definition at line 26 of file slope_func.h.
References IsInsideMM().
Referenced by CornerToTrackBits(), DrawTrackBits(), AITile::GetCornerHeight(), HalftileFoundation(), HalftileSlope(), SlopeWithOneCornerRaised(), and SpecialRailFoundation().
Returns the opposite corner.
corner | A Corner. |
Definition at line 175 of file slope_func.h.
Referenced by ApplyFoundationToSlope(), DrawAutorailSelection(), DrawTileSelectionRect(), DrawTrackBits(), FloodHalftile(), GetRailFoundation(), and SteepSlope().
Removes a halftile slope from a slope.
Non-halftile slopes remain unmodified.
s | A Slope. |
Definition at line 62 of file slope_func.h.
References SLOPE_HALFTILE_MASK.
Referenced by DrawAutorailSelection(), DrawTileSelection(), DrawTrackFence_NS_1(), DrawTrackFence_NS_2(), DrawTrackFence_WE_1(), DrawTrackFence_WE_2(), GetHighestSlopeCorner(), GetPartialZ(), GetSlopeZOnEdge(), HasSlopeHighestCorner(), IsUphillTrackdir(), and TestAutoslopeOnRailTile().
static uint SlopeToSpriteOffset | ( | Slope | s | ) | [inline, static] |
Returns the Sprite offset for a given Slope.
s | The Slope to get the offset for. |
Definition at line 406 of file slope_func.h.
References _slope_to_sprite_offset.
Referenced by DrawTile_TunnelBridge(), DrawTileSelectionRect(), and DrawTrackBits().
Returns the slope with a specific corner raised.
corner | The Corner. |
Definition at line 101 of file slope_func.h.
References IsValidCorner().
Referenced by ApplyFoundationToSlope(), DrawFoundation(), DrawTileSelectionRect(), GetRailFoundation(), GetSlopeZInCorner(), GetSlopeZOnEdge(), and SlopeWithThreeCornersRaised().
Returns the slope with all except one corner raised.
corner | The Corner. |
Definition at line 197 of file slope_func.h.
References ComplementSlope(), and SlopeWithOneCornerRaised().
Referenced by ApplyFoundationToSlope(), DrawAutorailSelection(), DrawFoundation(), DrawTrackBits(), GetRailFoundation(), and SteepSlope().
static Foundation SpecialRailFoundation | ( | Corner | corner | ) | [inline, static] |
Returns the special rail foundation for single horizontal/vertical track.
corner | The Corner with the track. |
Definition at line 394 of file slope_func.h.
References FOUNDATION_RAIL_W, and IsValidCorner().
Referenced by GetRailFoundation().
Returns a specific steep slope.
corner | A Corner. |
Definition at line 208 of file slope_func.h.
References OppositeCorner(), SLOPE_STEEP, and SlopeWithThreeCornersRaised().
Referenced by GetSlopeZInCorner().