src/track_type.h
author belugas
Sun, 15 Jun 2008 02:48:25 +0000
changeset 10965 a2b5f6f9be0c
parent 9112 ec6800eaa340
permissions -rw-r--r--
(svn r13519) -Feature[newGRF]: Implement var 63, variational action2 variable for Houses.
Or, in more simple terms, the check for the animation frame of nearby house.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2049
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2049
diff changeset
     2
8597
87f03bc9c8e4 (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents: 8596
diff changeset
     3
/** @file track_type.h All types related to tracks */
1942
634961366cdc (svn r2448) General cleanup of rail related code, more to follow.
matthijs
parents:
diff changeset
     4
8597
87f03bc9c8e4 (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents: 8596
diff changeset
     5
#ifndef TRACK_TYPE_H
87f03bc9c8e4 (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents: 8596
diff changeset
     6
#define TRACK_TYPE_H
4041
caf4fcb4e05b (svn r5309) Partially fix the rail header dependency fiasco: rail_map.h now depends on rail.h and not the other way round anymore
tron
parents: 3900
diff changeset
     7
8759
eae56497cf83 (svn r11827) -Codechange: do not include enum_type.hpp unnecessary.
rubidium
parents: 8599
diff changeset
     8
#include "core/enum_type.hpp"
eae56497cf83 (svn r11827) -Codechange: do not include enum_type.hpp unnecessary.
rubidium
parents: 8599
diff changeset
     9
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    10
/**
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    11
 * These are used to specify a single track.
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    12
 * Can be translated to a trackbit with TrackToTrackbit
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    13
 */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
    14
enum Track {
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    15
	TRACK_BEGIN = 0,        ///< Used for iterations
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    16
	TRACK_X     = 0,        ///< Track along the x-axis (north-east to south-west)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    17
	TRACK_Y     = 1,        ///< Track along the y-axis (north-west to south-east)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    18
	TRACK_UPPER = 2,        ///< Track in the upper corner of the tile (north)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    19
	TRACK_LOWER = 3,        ///< Track in the lower corner of the tile (south)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    20
	TRACK_LEFT  = 4,        ///< Track in the left corner of the tile (west)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    21
	TRACK_RIGHT = 5,        ///< Track in the right corner of the tile (east)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    22
	TRACK_END,              ///< Used for iterations
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    23
	INVALID_TRACK = 0xFF    ///< Flag for an invalid track
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
    24
};
4041
caf4fcb4e05b (svn r5309) Partially fix the rail header dependency fiasco: rail_map.h now depends on rail.h and not the other way round anymore
tron
parents: 3900
diff changeset
    25
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    26
/** Allow incrementing of Track variables */
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    27
DECLARE_POSTFIX_INCREMENT(Track);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    28
/** Define basic enum properties */
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    29
template <> struct EnumPropsT<Track> : MakeEnumPropsT<Track, byte, TRACK_BEGIN, TRACK_END, INVALID_TRACK> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    30
typedef TinyEnumT<Track> TrackByte;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    31
4041
caf4fcb4e05b (svn r5309) Partially fix the rail header dependency fiasco: rail_map.h now depends on rail.h and not the other way round anymore
tron
parents: 3900
diff changeset
    32
caf4fcb4e05b (svn r5309) Partially fix the rail header dependency fiasco: rail_map.h now depends on rail.h and not the other way round anymore
tron
parents: 3900
diff changeset
    33
/** Bitfield corresponding to Track */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
    34
enum TrackBits {
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    35
	TRACK_BIT_NONE    = 0U,                                                 ///< No track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    36
	TRACK_BIT_X       = 1U << TRACK_X,                                      ///< X-axis track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    37
	TRACK_BIT_Y       = 1U << TRACK_Y,                                      ///< Y-axis track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    38
	TRACK_BIT_UPPER   = 1U << TRACK_UPPER,                                  ///< Upper track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    39
	TRACK_BIT_LOWER   = 1U << TRACK_LOWER,                                  ///< Lower track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    40
	TRACK_BIT_LEFT    = 1U << TRACK_LEFT,                                   ///< Left track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    41
	TRACK_BIT_RIGHT   = 1U << TRACK_RIGHT,                                  ///< Right track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    42
	TRACK_BIT_CROSS   = TRACK_BIT_X     | TRACK_BIT_Y,                      ///< X-Y-axis cross
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    43
	TRACK_BIT_HORZ    = TRACK_BIT_UPPER | TRACK_BIT_LOWER,                  ///< Upper and lower track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    44
	TRACK_BIT_VERT    = TRACK_BIT_LEFT  | TRACK_BIT_RIGHT,                  ///< Left and right track
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    45
	TRACK_BIT_3WAY_NE = TRACK_BIT_X     | TRACK_BIT_UPPER | TRACK_BIT_RIGHT,///< "Arrow" to the north-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    46
	TRACK_BIT_3WAY_SE = TRACK_BIT_Y     | TRACK_BIT_LOWER | TRACK_BIT_RIGHT,///< "Arrow" to the south-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    47
	TRACK_BIT_3WAY_SW = TRACK_BIT_X     | TRACK_BIT_LOWER | TRACK_BIT_LEFT, ///< "Arrow" to the south-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    48
	TRACK_BIT_3WAY_NW = TRACK_BIT_Y     | TRACK_BIT_UPPER | TRACK_BIT_LEFT, ///< "Arrow" to the north-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    49
	TRACK_BIT_ALL     = TRACK_BIT_CROSS | TRACK_BIT_HORZ  | TRACK_BIT_VERT, ///< All possible tracks
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    50
	TRACK_BIT_MASK    = 0x3FU,                                              ///< Bitmask for the first 6 bits
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    51
	TRACK_BIT_WORMHOLE = 0x40U,                                             ///< Bitflag for a wormhole (used for tunnels)
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    52
	TRACK_BIT_DEPOT   = 0x80U,                                              ///< Bitflag for a depot
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    53
	INVALID_TRACK_BIT = 0xFF                                                ///< Flag for an invalid trackbits value
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
    54
};
4041
caf4fcb4e05b (svn r5309) Partially fix the rail header dependency fiasco: rail_map.h now depends on rail.h and not the other way round anymore
tron
parents: 3900
diff changeset
    55
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    56
/** Define basic enum properties */
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    57
template <> struct EnumPropsT<TrackBits> : MakeEnumPropsT<TrackBits, byte, TRACK_BIT_NONE, TRACK_BIT_ALL, INVALID_TRACK_BIT> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    58
typedef TinyEnumT<TrackBits> TrackBitsByte;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    59
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    60
DECLARE_ENUM_AS_BIT_SET(TrackBits);
4041
caf4fcb4e05b (svn r5309) Partially fix the rail header dependency fiasco: rail_map.h now depends on rail.h and not the other way round anymore
tron
parents: 3900
diff changeset
    61
4158
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 4077
diff changeset
    62
/**
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    63
 * Enumeration for tracks and directions.
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    64
 *
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    65
 * These are a combination of tracks and directions. Values are 0-5 in one
6325
f03f94f4d8fc (svn r8712) -Codechange/cleanup: replace 'magic' constants with enums, use proper types instead of byte, uint etc., give variables more descriptive names and add some comments.
rubidium
parents: 6319
diff changeset
    66
 * direction (corresponding to the Track enum) and 8-13 in the other direction.
f03f94f4d8fc (svn r8712) -Codechange/cleanup: replace 'magic' constants with enums, use proper types instead of byte, uint etc., give variables more descriptive names and add some comments.
rubidium
parents: 6319
diff changeset
    67
 * 6, 7, 14 and 15 are used to encode the reversing of road vehicles. Those
f03f94f4d8fc (svn r8712) -Codechange/cleanup: replace 'magic' constants with enums, use proper types instead of byte, uint etc., give variables more descriptive names and add some comments.
rubidium
parents: 6319
diff changeset
    68
 * reversing track dirs are not considered to be 'valid' except in a small
f03f94f4d8fc (svn r8712) -Codechange/cleanup: replace 'magic' constants with enums, use proper types instead of byte, uint etc., give variables more descriptive names and add some comments.
rubidium
parents: 6319
diff changeset
    69
 * corner in the road vehicle controller.
f03f94f4d8fc (svn r8712) -Codechange/cleanup: replace 'magic' constants with enums, use proper types instead of byte, uint etc., give variables more descriptive names and add some comments.
rubidium
parents: 6319
diff changeset
    70
 */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
    71
enum Trackdir {
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    72
	TRACKDIR_BEGIN    =  0,         ///< Used for iterations
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    73
	TRACKDIR_X_NE     =  0,         ///< X-axis and direction to north-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    74
	TRACKDIR_Y_SE     =  1,         ///< Y-axis and direction to south-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    75
	TRACKDIR_UPPER_E  =  2,         ///< Upper track and direction to east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    76
	TRACKDIR_LOWER_E  =  3,         ///< Lower track and direction to east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    77
	TRACKDIR_LEFT_S   =  4,         ///< Left track and direction to south
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    78
	TRACKDIR_RIGHT_S  =  5,         ///< Right track and direction to south
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    79
	TRACKDIR_RVREV_NE =  6,         ///< (Road vehicle) reverse direction north-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    80
	TRACKDIR_RVREV_SE =  7,         ///< (Road vehicle) reverse direction south-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    81
	TRACKDIR_X_SW     =  8,         ///< X-axis and direction to south-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    82
	TRACKDIR_Y_NW     =  9,         ///< Y-axis and direction to north-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    83
	TRACKDIR_UPPER_W  = 10,         ///< Upper track and direction to west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    84
	TRACKDIR_LOWER_W  = 11,         ///< Lower track and direction to west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    85
	TRACKDIR_LEFT_N   = 12,         ///< Left track and direction to north
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    86
	TRACKDIR_RIGHT_N  = 13,         ///< Right track and direction to north
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    87
	TRACKDIR_RVREV_SW = 14,         ///< (Road vehicle) reverse direction south-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    88
	TRACKDIR_RVREV_NW = 15,         ///< (Road vehicle) reverse direction north-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    89
	TRACKDIR_END,                   ///< Used for iterations
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    90
	INVALID_TRACKDIR  = 0xFF,       ///< Flag for an invalid trackdir
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
    91
};
1942
634961366cdc (svn r2448) General cleanup of rail related code, more to follow.
matthijs
parents:
diff changeset
    92
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    93
/** Define basic enum properties */
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    94
template <> struct EnumPropsT<Trackdir> : MakeEnumPropsT<Trackdir, byte, TRACKDIR_BEGIN, TRACKDIR_END, INVALID_TRACKDIR> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    95
typedef TinyEnumT<Trackdir> TrackdirByte;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    96
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    97
/**
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    98
 * Enumeration of bitmasks for the TrackDirs
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
    99
 *
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   100
 * These are a combination of tracks and directions. Values are 0-5 in one
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   101
 * direction (corresponding to the Track enum) and 8-13 in the other direction.
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   102
 */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
   103
enum TrackdirBits {
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   104
	TRACKDIR_BIT_NONE     = 0x0000, ///< No track build
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   105
	TRACKDIR_BIT_X_NE     = 0x0001, ///< Track x-axis, direction north-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   106
	TRACKDIR_BIT_Y_SE     = 0x0002, ///< Track y-axis, direction south-east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   107
	TRACKDIR_BIT_UPPER_E  = 0x0004, ///< Track upper, direction east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   108
	TRACKDIR_BIT_LOWER_E  = 0x0008, ///< Track lower, direction east
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   109
	TRACKDIR_BIT_LEFT_S   = 0x0010, ///< Track left, direction south
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   110
	TRACKDIR_BIT_RIGHT_S  = 0x0020, ///< Track right, direction south
1942
634961366cdc (svn r2448) General cleanup of rail related code, more to follow.
matthijs
parents:
diff changeset
   111
	/* Again, note the two missing values here. This enables trackdir -> track conversion by doing (trackdir & 0xFF) */
7892
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   112
	TRACKDIR_BIT_X_SW     = 0x0100, ///< Track x-axis, direction south-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   113
	TRACKDIR_BIT_Y_NW     = 0x0200, ///< Track y-axis, direction north-west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   114
	TRACKDIR_BIT_UPPER_W  = 0x0400, ///< Track upper, direction west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   115
	TRACKDIR_BIT_LOWER_W  = 0x0800, ///< Track lower, direction west
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   116
	TRACKDIR_BIT_LEFT_N   = 0x1000, ///< Track left, direction north
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   117
	TRACKDIR_BIT_RIGHT_N  = 0x2000, ///< Track right, direction north
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   118
	TRACKDIR_BIT_MASK     = 0x3F3F, ///< Bitmask for bit-operations
af0701f35fdf (svn r10765) -Documentation [FS#1100]: of rail.h. Based on a patch by Progman.
rubidium
parents: 7831
diff changeset
   119
	INVALID_TRACKDIR_BIT  = 0xFFFF, ///< Flag for an invalid trackdirbit value
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6488
diff changeset
   120
};
1942
634961366cdc (svn r2448) General cleanup of rail related code, more to follow.
matthijs
parents:
diff changeset
   121
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   122
/** Define basic enum properties */
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   123
template <> struct EnumPropsT<TrackdirBits> : MakeEnumPropsT<TrackdirBits, uint16, TRACKDIR_BIT_NONE, TRACKDIR_BIT_MASK, INVALID_TRACKDIR_BIT> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   124
typedef TinyEnumT<TrackdirBits> TrackdirBitsShort;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   125
DECLARE_ENUM_AS_BIT_SET(TrackdirBits);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   126
9112
ec6800eaa340 (svn r12199) -Codechange: Remove magic around the results of GetTileTrackStatus().
frosch
parents: 8759
diff changeset
   127
typedef uint32 TrackStatus;
ec6800eaa340 (svn r12199) -Codechange: Remove magic around the results of GetTileTrackStatus().
frosch
parents: 8759
diff changeset
   128
8599
b609cdeeff3f (svn r11664) -Codechange: use more specific ("rail_type.h" instead of "rail.h" that includes way more than only "rail_type.h") includes at some places.
rubidium
parents: 8597
diff changeset
   129
#endif /* TRACK_TYPE_H */