# track_type.h File Reference

All types related to tracks. More...

`#include "core/enum_type.hpp"`

Go to the source code of this file.

## Data Structures
struct | EnumPropsT< Track >
| Define basic enum properties. More...
struct | EnumPropsT< Trackdir >
| Define basic enum properties. More...
## Typedefs
typedef TinyEnumT< Track > | TrackByte
typedef SimpleTinyEnumT < TrackBits, byte > | TrackBitsByte
typedef TinyEnumT< Trackdir > | TrackdirByte
typedef SimpleTinyEnumT < TrackdirBits, uint16 > | TrackdirBitsShort
typedef uint32 | TrackStatus
## Enumerations
enum | Track { TRACK_BEGIN = 0, TRACK_X = 0, TRACK_Y = 1, TRACK_UPPER = 2, TRACK_LOWER = 3, TRACK_LEFT = 4, TRACK_RIGHT = 5, TRACK_END, INVALID_TRACK = 0xFF }
| These are used to specify a single track. More...
enum | TrackBits { TRACK_BIT_NONE = 0U, TRACK_BIT_X = 1U << TRACK_X, TRACK_BIT_Y = 1U << TRACK_Y, TRACK_BIT_UPPER = 1U << TRACK_UPPER, TRACK_BIT_LOWER = 1U << TRACK_LOWER, TRACK_BIT_LEFT = 1U << TRACK_LEFT, TRACK_BIT_RIGHT = 1U << TRACK_RIGHT, TRACK_BIT_CROSS = TRACK_BIT_X | TRACK_BIT_Y, TRACK_BIT_HORZ = TRACK_BIT_UPPER | TRACK_BIT_LOWER, TRACK_BIT_VERT = TRACK_BIT_LEFT | TRACK_BIT_RIGHT, TRACK_BIT_3WAY_NE = TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT, TRACK_BIT_3WAY_SE = TRACK_BIT_Y | TRACK_BIT_LOWER | TRACK_BIT_RIGHT, TRACK_BIT_3WAY_SW = TRACK_BIT_X | TRACK_BIT_LOWER | TRACK_BIT_LEFT, TRACK_BIT_3WAY_NW = TRACK_BIT_Y | TRACK_BIT_UPPER | TRACK_BIT_LEFT, TRACK_BIT_ALL = TRACK_BIT_CROSS | TRACK_BIT_HORZ | TRACK_BIT_VERT, TRACK_BIT_MASK = 0x3FU, TRACK_BIT_WORMHOLE = 0x40U, TRACK_BIT_DEPOT = 0x80U, INVALID_TRACK_BIT = 0xFF }
| Bitfield corresponding to Track. More...
enum | Trackdir { TRACKDIR_BEGIN = 0, TRACKDIR_X_NE = 0, TRACKDIR_Y_SE = 1, TRACKDIR_UPPER_E = 2, TRACKDIR_LOWER_E = 3, TRACKDIR_LEFT_S = 4, TRACKDIR_RIGHT_S = 5, TRACKDIR_RVREV_NE = 6, TRACKDIR_RVREV_SE = 7, TRACKDIR_X_SW = 8, TRACKDIR_Y_NW = 9, TRACKDIR_UPPER_W = 10, TRACKDIR_LOWER_W = 11, TRACKDIR_LEFT_N = 12, TRACKDIR_RIGHT_N = 13, TRACKDIR_RVREV_SW = 14, TRACKDIR_RVREV_NW = 15, TRACKDIR_END, INVALID_TRACKDIR = 0xFF }
| Enumeration for tracks and directions. More...
enum | TrackdirBits { TRACKDIR_BIT_NONE = 0x0000, TRACKDIR_BIT_X_NE = 0x0001, TRACKDIR_BIT_Y_SE = 0x0002, TRACKDIR_BIT_UPPER_E = 0x0004, TRACKDIR_BIT_LOWER_E = 0x0008, TRACKDIR_BIT_LEFT_S = 0x0010, TRACKDIR_BIT_RIGHT_S = 0x0020, TRACKDIR_BIT_X_SW = 0x0100, TRACKDIR_BIT_Y_NW = 0x0200, TRACKDIR_BIT_UPPER_W = 0x0400, TRACKDIR_BIT_LOWER_W = 0x0800, TRACKDIR_BIT_LEFT_N = 0x1000, TRACKDIR_BIT_RIGHT_N = 0x2000, TRACKDIR_BIT_MASK = 0x3F3F, INVALID_TRACKDIR_BIT = 0xFFFF }
| Enumeration of bitmasks for the TrackDirs. More...
## Functions
| DECLARE_POSTFIX_INCREMENT (Track)
| Allow incrementing of Track variables.
| DECLARE_ENUM_AS_BIT_SET (TrackBits)
| DECLARE_ENUM_AS_BIT_SET (TrackdirBits)

## Detailed Description

All types related to tracks.

Definition in file track_type.h.

## Enumeration Type Documentation

enum Track

These are used to specify a single track.

Can be translated to a trackbit with TrackToTrackbit

Enumerator:

  TRACK_BEGIN | Used for iterations.
  TRACK_X | Track along the x-axis (north-east to south-west).
  TRACK_Y | Track along the y-axis (north-west to south-east).
  TRACK_UPPER | Track in the upper corner of the tile (north).
  TRACK_LOWER | Track in the lower corner of the tile (south).
  TRACK_LEFT | Track in the left corner of the tile (west).
  TRACK_RIGHT | Track in the right corner of the tile (east).
  TRACK_END | Used for iterations.
  INVALID_TRACK | Flag for an invalid track.

Definition at line 21 of file track_type.h.

enum TrackBits

Bitfield corresponding to Track.

Enumerator:

  TRACK_BIT_NONE | No track.
  TRACK_BIT_X | X-axis track.
  TRACK_BIT_Y | Y-axis track.
  TRACK_BIT_UPPER | Upper track.
  TRACK_BIT_LOWER | Lower track.
  TRACK_BIT_LEFT | Left track.
  TRACK_BIT_RIGHT | Right track.
  TRACK_BIT_CROSS | X-Y-axis cross.
  TRACK_BIT_HORZ | Upper and lower track.
  TRACK_BIT_VERT | Left and right track.
  TRACK_BIT_3WAY_NE | "Arrow" to the north-east
  TRACK_BIT_3WAY_SE | "Arrow" to the south-east
  TRACK_BIT_3WAY_SW | "Arrow" to the south-west
  TRACK_BIT_3WAY_NW | "Arrow" to the north-west
  TRACK_BIT_ALL | All possible tracks.
  TRACK_BIT_MASK | Bitmask for the first 6 bits.
  TRACK_BIT_WORMHOLE | Bitflag for a wormhole (used for tunnels).
  TRACK_BIT_DEPOT | Bitflag for a depot.
  INVALID_TRACK_BIT | Flag for an invalid trackbits value.

Definition at line 41 of file track_type.h.

enum Trackdir

Enumeration for tracks and directions.

These are a combination of tracks and directions. Values are 0-5 in one direction (corresponding to the Track enum) and 8-13 in the other direction. 6, 7, 14 and 15 are used to encode the reversing of road vehicles. Those reversing track dirs are not considered to be 'valid' except in a small corner in the road vehicle controller.

Enumerator:

  TRACKDIR_BEGIN | Used for iterations.
  TRACKDIR_X_NE | X-axis and direction to north-east.
  TRACKDIR_Y_SE | Y-axis and direction to south-east.
  TRACKDIR_UPPER_E | Upper track and direction to east.
  TRACKDIR_LOWER_E | Lower track and direction to east.
  TRACKDIR_LEFT_S | Left track and direction to south.
  TRACKDIR_RIGHT_S | Right track and direction to south.
  TRACKDIR_RVREV_NE | (Road vehicle) reverse direction north-east
  TRACKDIR_RVREV_SE | (Road vehicle) reverse direction south-east
  TRACKDIR_X_SW | X-axis and direction to south-west.
  TRACKDIR_Y_NW | Y-axis and direction to north-west.
  TRACKDIR_UPPER_W | Upper track and direction to west.
  TRACKDIR_LOWER_W | Lower track and direction to west.
  TRACKDIR_LEFT_N | Left track and direction to north.
  TRACKDIR_RIGHT_N | Right track and direction to north.
  TRACKDIR_RVREV_SW | (Road vehicle) reverse direction south-west
  TRACKDIR_RVREV_NW | (Road vehicle) reverse direction north-west
  TRACKDIR_END | Used for iterations.
  INVALID_TRACKDIR | Flag for an invalid trackdir.

Definition at line 74 of file track_type.h.

enum TrackdirBits

Enumeration of bitmasks for the TrackDirs.

These are a combination of tracks and directions. Values are 0-5 in one direction (corresponding to the Track enum) and 8-13 in the other direction.

Enumerator:

  TRACKDIR_BIT_NONE | No track build.
  TRACKDIR_BIT_X_NE | Track x-axis, direction north-east.
  TRACKDIR_BIT_Y_SE | Track y-axis, direction south-east.
  TRACKDIR_BIT_UPPER_E | Track upper, direction east.
  TRACKDIR_BIT_LOWER_E | Track lower, direction east.
  TRACKDIR_BIT_LEFT_S | Track left, direction south.
  TRACKDIR_BIT_RIGHT_S | Track right, direction south.
  TRACKDIR_BIT_X_SW | Track x-axis, direction south-west.
  TRACKDIR_BIT_Y_NW | Track y-axis, direction north-west.
  TRACKDIR_BIT_UPPER_W | Track upper, direction west.
  TRACKDIR_BIT_LOWER_W | Track lower, direction west.
  TRACKDIR_BIT_LEFT_N | Track left, direction north.
  TRACKDIR_BIT_RIGHT_N | Track right, direction north.
  TRACKDIR_BIT_MASK | Bitmask for bit-operations.
  INVALID_TRACKDIR_BIT | Flag for an invalid trackdirbit value.

Definition at line 106 of file track_type.h.