src/direction.h
author Darkvater
Sun, 18 Feb 2007 22:50:51 +0000
changeset 6400 7b98825c5cb0
parent 5838 9c3129cb019b
child 6268 4b5241e5dd10
permissions -rw-r--r--
(svn r8807) -Feature: Add support for loading (some of) the TTDP extra chunks mainly list of GRFIDs and TTDP version the game was saved with.
GRFID list is read and active GRFs are loaded with the game if present in the data/ directory.
TTDP versioning information only works for newer versions, old versions will only give rough information but it's not worth the effort to precisely figure out what bit means what where and when.
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     1
/* $Id$ */
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     2
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     3
#ifndef DIRECTION_H
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     4
#define DIRECTION_H
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     5
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
     6
#include "helpers.hpp"
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
     7
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     8
/* Direction as commonly used in v->direction, 8 way. */
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
     9
typedef enum Direction {
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    10
	DIR_BEGIN = 0,
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    11
	DIR_N   = 0,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    12
	DIR_NE  = 1,      /* Northeast, upper right on your monitor */
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    13
	DIR_E   = 2,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    14
	DIR_SE  = 3,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    15
	DIR_S   = 4,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    16
	DIR_SW  = 5,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    17
	DIR_W   = 6,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    18
	DIR_NW  = 7,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    19
	DIR_END,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    20
	INVALID_DIR = 0xFF,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    21
} Direction;
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    22
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    23
/** 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
    24
template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    25
typedef TinyEnumT<Direction> DirectionByte;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    26
3157
40de8616c04c (svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3154
diff changeset
    27
static inline Direction ReverseDir(Direction d)
40de8616c04c (svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3154
diff changeset
    28
{
40de8616c04c (svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3154
diff changeset
    29
	return (Direction)(4 ^ d);
40de8616c04c (svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3154
diff changeset
    30
}
40de8616c04c (svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3154
diff changeset
    31
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    32
3158
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    33
typedef enum DirDiff {
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    34
	DIRDIFF_SAME    = 0,
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    35
	DIRDIFF_45RIGHT = 1,
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    36
	DIRDIFF_90RIGHT = 2,
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    37
	DIRDIFF_REVERSE = 4,
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    38
	DIRDIFF_90LEFT  = 6,
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    39
	DIRDIFF_45LEFT  = 7
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    40
} DirDiff;
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    41
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    42
static inline DirDiff DirDifference(Direction d0, Direction d1)
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    43
{
3162
68efad70f8a4 (svn r3788) Fix (harmless) typo in r3784
tron
parents: 3158
diff changeset
    44
	return (DirDiff)((d0 + 8 - d1) % 8);
3158
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    45
}
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    46
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    47
static inline DirDiff ChangeDirDiff(DirDiff d, DirDiff delta)
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    48
{
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    49
	return (DirDiff)((d + delta) % 8);
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    50
}
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    51
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    52
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    53
static inline Direction ChangeDir(Direction d, DirDiff delta)
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    54
{
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    55
	return (Direction)((d + delta) % 8);
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    56
}
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    57
a821c8fec829 (svn r3784) Add a type and functions to handle direction changes
tron
parents: 3157
diff changeset
    58
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    59
/* Direction commonly used as the direction of entering and leaving tiles, 4-way */
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    60
typedef enum DiagDirection {
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    61
	DIAGDIR_BEGIN = 0,
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    62
	DIAGDIR_NE  = 0,      /* Northeast, upper right on your monitor */
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    63
	DIAGDIR_SE  = 1,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    64
	DIAGDIR_SW  = 2,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    65
	DIAGDIR_NW  = 3,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    66
	DIAGDIR_END,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    67
	INVALID_DIAGDIR = 0xFF,
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    68
} DiagDirection;
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    69
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    70
DECLARE_POSTFIX_INCREMENT(DiagDirection);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    71
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    72
/** 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
    73
template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    74
typedef TinyEnumT<DiagDirection> DiagDirectionByte;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    75
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    76
static inline DiagDirection ReverseDiagDir(DiagDirection d)
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    77
{
3148
82e8641d2b42 (svn r3769) Add a cast to make KUDr's C++ compiler happy
tron
parents: 3147
diff changeset
    78
	return (DiagDirection)(2 ^ d);
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    79
}
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    80
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    81
3163
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    82
typedef enum DiagDirDiff {
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    83
	DIAGDIRDIFF_SAME    = 0,
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    84
	DIAGDIRDIFF_90RIGHT = 1,
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    85
	DIAGDIRDIFF_REVERSE = 2,
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    86
	DIAGDIRDIFF_90LEFT  = 3
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    87
} DiagDirDiff;
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    88
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    89
static inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta)
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    90
{
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    91
	return (DiagDirection)((d + delta) % 4);
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    92
}
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    93
129a91e147b8 (svn r3789) Add an enum and function to handle DiagDirection changes
tron
parents: 3162
diff changeset
    94
3153
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
    95
static inline DiagDirection DirToDiagDir(Direction dir)
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    96
{
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    97
	return (DiagDirection)(dir >> 1);
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    98
}
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
    99
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
   100
3153
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
   101
static inline Direction DiagDirToDir(DiagDirection dir)
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
   102
{
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
   103
	return (Direction)(dir * 2 + 1);
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
   104
}
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
   105
301c1d71122b (svn r3776) Replace many ints and magic numbers by Direction, DiagDirection and friends
tron
parents: 3148
diff changeset
   106
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
   107
/* the 2 axis */
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
   108
typedef enum Axis {
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
   109
	AXIS_X = 0,
3699
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   110
	AXIS_Y = 1,
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   111
	AXIS_END
3147
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
   112
} Axis;
0a09ce6d651a (svn r3767) Move all direction related enums and functions to a separate header
tron
parents:
diff changeset
   113
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents: 3153
diff changeset
   114
4158
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 3953
diff changeset
   115
static inline Axis OtherAxis(Axis a)
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 3953
diff changeset
   116
{
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 3953
diff changeset
   117
	return (Axis)(a ^ 1);
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 3953
diff changeset
   118
}
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 3953
diff changeset
   119
a8f7265a6fd0 (svn r5582) Add and use AxisToTrack{Bits,}()
tron
parents: 3953
diff changeset
   120
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents: 3153
diff changeset
   121
static inline Axis DiagDirToAxis(DiagDirection d)
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents: 3153
diff changeset
   122
{
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents: 3153
diff changeset
   123
	return (Axis)(d & 1);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents: 3153
diff changeset
   124
}
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents: 3153
diff changeset
   125
3209
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   126
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   127
/*
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   128
 * Converts an Axis to a DiagDirection
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   129
 * Points always in the positive direction, i.e. S[EW]
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   130
 */
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   131
static inline DiagDirection AxisToDiagDir(Axis a)
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   132
{
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   133
	return (DiagDirection)(2 - a);
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   134
}
e0b7d48351a3 (svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents: 3163
diff changeset
   135
3953
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   136
/**
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   137
 * Convert an axis and a flag for north/south into a DiagDirection
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   138
 * @param ns north -> 0, south -> 1
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   139
 */
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   140
static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns)
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   141
{
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   142
	return (DiagDirection)(xy * 3 ^ ns * 2);
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   143
}
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   144
db302c2d1a2a (svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents: 3744
diff changeset
   145
3699
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   146
static inline bool IsValidDiagDirection(DiagDirection d)
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   147
{
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   148
	return d < DIAGDIR_END;
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   149
}
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   150
3744
d5f308a7218b (svn r4732) - Fix: use correct types in IsValid[Direction|Axis]
glx
parents: 3699
diff changeset
   151
static inline bool IsValidDirection(Direction d)
3699
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   152
{
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   153
	return d < DIR_END;
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   154
}
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   155
3744
d5f308a7218b (svn r4732) - Fix: use correct types in IsValid[Direction|Axis]
glx
parents: 3699
diff changeset
   156
static inline bool IsValidAxis(Axis d)
3699
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   157
{
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   158
	return d < AXIS_END;
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   159
}
15e473a194ef (svn r4640) - Add: IsValidDiagDirection, IsValidDirection and IsValidAxis functions.
matthijs
parents: 3209
diff changeset
   160
4666
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 4158
diff changeset
   161
#endif /* DIRECTION_H */