slope_func.h File Reference

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.

Detailed Description

Functions related to slopes.

Definition in file slope_func.h.


Function Documentation

static Slope ComplementSlope ( Slope  s  )  [inline, static]

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.

Precondition:
The slope must neither be steep nor a halftile slope.
Parameters:
s The Slope to get the complement.
Returns:
a complement Slope of the given slope.

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.

Parameters:
s The current Slope.
Returns:
The needed Foundation.

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.

Precondition:
f != FOUNDATION_STEEP_BOTH
Parameters:
f The Foundation.
Returns:
The Corner with track.

Definition at line 324 of file slope_func.h.

References FOUNDATION_HALFTILE_N, FOUNDATION_HALFTILE_W, and IsInsideMM().

Referenced by ApplyFoundationToSlope(), DrawFoundation(), and DrawTrackBits().

static Corner GetHalftileSlopeCorner ( Slope  s  )  [inline, static]

Returns the leveled halftile of a halftile slope.

Precondition:
The slope must be a halftile slope.
Parameters:
s The Slope.
Returns:
The corner of the leveled halftile.

Definition at line 150 of file slope_func.h.

References IsHalftileSlope().

Referenced by DrawAutorailSelection(), DrawCatenaryRailway(), DrawTileSelection(), DrawTileSelectionRect(), GetPartialZ(), and GetSlopeZOnEdge().

static Corner GetHighestSlopeCorner ( Slope  s  )  [inline, static]

Returns the highest corner of a slope (one corner raised or a steep slope).

Precondition:
The slope must be a slope with one corner raised or a steep slope. A halftile slope is ignored.
Parameters:
s The Slope.
Returns:
Highest corner.

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.

Parameters:
s A Slope
Returns:
The direction the slope goes up in. Or INVALID_DIAGDIR if the slope is not an inclined 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.

Parameters:
f The Foundation.
Returns:
The Corner with track.

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

Parameters:
s The Slope.
Returns:
Relative height of highest corner.

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.

Parameters:
corner The Corner with the track.
Returns:
The wanted Foundation.

Definition at line 382 of file slope_func.h.

References FOUNDATION_HALFTILE_W, and IsValidCorner().

Referenced by DrawTrackBits(), and GetRailFoundation().

static Slope HalftileSlope ( Slope  s,
Corner  corner 
) [inline, static]

Adds a halftile slope to a slope.

Parameters:
s Slope without a halftile slope.
corner The Corner of the halftile.
Returns:
The Slope s with the halftile slope added.

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.

Parameters:
s The Slope.
Returns:
true iff the slope has a highest corner.

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.

Parameters:
axis The Axis.
Returns:
The needed Foundation.

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.

Parameters:
dir A DiagDirection
Returns:
The Slope that goes up in direction dir.

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.

Parameters:
f Maybe a Foundation.
Returns:
true iff f is 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.

Parameters:
s The given Slope.
Returns:
True if the slope is non-continuous, else false.

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.

Parameters:
f The Foundation.
Returns:
true iff f is an inclined 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.

Parameters:
s The Slope
Returns:
true iff the slope is inclined.

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.

Parameters:
f The Foundation.
Returns:
true iff f is a leveled 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.

Parameters:
f The Foundation.
Returns:
true iff f is a non-continuous 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.

Parameters:
s The Slope
Returns:
true iff exactly one corner is raised

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.

Parameters:
s The Slope
Returns:
true iff exactly three corners are raised

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.

Parameters:
f The Foundation.
Returns:
true iff f is a special rail foundation for single horizontal/vertical track.

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]
static bool IsValidCorner ( Corner  corner  )  [inline, static]

Rangecheck for Corner enumeration.

Parameters:
corner A Corner.
Returns:
true iff corner is in a valid range.

Definition at line 26 of file slope_func.h.

References IsInsideMM().

Referenced by CornerToTrackBits(), DrawTrackBits(), AITile::GetCornerHeight(), HalftileFoundation(), HalftileSlope(), SlopeWithOneCornerRaised(), and SpecialRailFoundation().

static Corner OppositeCorner ( Corner  corner  )  [inline, static]

Returns the opposite corner.

Parameters:
corner A Corner.
Returns:
The opposite corner to "corner".

Definition at line 175 of file slope_func.h.

Referenced by ApplyFoundationToSlope(), DrawAutorailSelection(), DrawTileSelectionRect(), DrawTrackBits(), FloodHalftile(), GetRailFoundation(), and SteepSlope().

static Slope RemoveHalftileSlope ( Slope  s  )  [inline, static]

Removes a halftile slope from a slope.

Non-halftile slopes remain unmodified.

Parameters:
s A Slope.
Returns:
The slope s without its halftile 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.

Parameters:
s The Slope to get the offset for.
Returns:
The sprite offset for this Slope.

Definition at line 406 of file slope_func.h.

References _slope_to_sprite_offset.

Referenced by DrawTile_TunnelBridge(), DrawTileSelectionRect(), and DrawTrackBits().

static Slope SlopeWithOneCornerRaised ( Corner  corner  )  [inline, static]

Returns the slope with a specific corner raised.

Parameters:
corner The Corner.
Returns:
The Slope with corner "corner" raised.

Definition at line 101 of file slope_func.h.

References IsValidCorner().

Referenced by ApplyFoundationToSlope(), DrawFoundation(), DrawTileSelectionRect(), GetRailFoundation(), GetSlopeZInCorner(), GetSlopeZOnEdge(), and SlopeWithThreeCornersRaised().

static Slope SlopeWithThreeCornersRaised ( Corner  corner  )  [inline, static]

Returns the slope with all except one corner raised.

Parameters:
corner The Corner.
Returns:
The Slope with all corners but "corner" raised.

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.

Parameters:
corner The Corner with the track.
Returns:
The wanted Foundation.

Definition at line 394 of file slope_func.h.

References FOUNDATION_RAIL_W, and IsValidCorner().

Referenced by GetRailFoundation().

static Slope SteepSlope ( Corner  corner  )  [inline, static]

Returns a specific steep slope.

Parameters:
corner A Corner.
Returns:
The steep Slope with "corner" as highest corner.

Definition at line 208 of file slope_func.h.

References OppositeCorner(), SLOPE_STEEP, and SlopeWithThreeCornersRaised().

Referenced by GetSlopeZInCorner().


Generated on Fri Mar 18 23:17:51 2011 for OpenTTD by  doxygen 1.6.1