equal
deleted
inserted
replaced
1 /* $Id$ */ |
1 /* $Id$ */ |
2 |
2 |
3 #ifndef DIRECTION_H |
3 #ifndef DIRECTION_H |
4 #define DIRECTION_H |
4 #define DIRECTION_H |
5 |
5 |
|
6 #include "helpers.hpp" |
|
7 |
6 /* Direction as commonly used in v->direction, 8 way. */ |
8 /* Direction as commonly used in v->direction, 8 way. */ |
7 typedef enum Direction { |
9 typedef enum Direction { |
|
10 DIR_BEGIN = 0, |
8 DIR_N = 0, |
11 DIR_N = 0, |
9 DIR_NE = 1, /* Northeast, upper right on your monitor */ |
12 DIR_NE = 1, /* Northeast, upper right on your monitor */ |
10 DIR_E = 2, |
13 DIR_E = 2, |
11 DIR_SE = 3, |
14 DIR_SE = 3, |
12 DIR_S = 4, |
15 DIR_S = 4, |
14 DIR_W = 6, |
17 DIR_W = 6, |
15 DIR_NW = 7, |
18 DIR_NW = 7, |
16 DIR_END, |
19 DIR_END, |
17 INVALID_DIR = 0xFF, |
20 INVALID_DIR = 0xFF, |
18 } Direction; |
21 } Direction; |
|
22 |
|
23 /** Define basic enum properties */ |
|
24 template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {}; |
|
25 typedef TinyEnumT<Direction> DirectionByte; |
19 |
26 |
20 static inline Direction ReverseDir(Direction d) |
27 static inline Direction ReverseDir(Direction d) |
21 { |
28 { |
22 return (Direction)(4 ^ d); |
29 return (Direction)(4 ^ d); |
23 } |
30 } |
49 } |
56 } |
50 |
57 |
51 |
58 |
52 /* Direction commonly used as the direction of entering and leaving tiles, 4-way */ |
59 /* Direction commonly used as the direction of entering and leaving tiles, 4-way */ |
53 typedef enum DiagDirection { |
60 typedef enum DiagDirection { |
|
61 DIAGDIR_BEGIN = 0, |
54 DIAGDIR_NE = 0, /* Northeast, upper right on your monitor */ |
62 DIAGDIR_NE = 0, /* Northeast, upper right on your monitor */ |
55 DIAGDIR_SE = 1, |
63 DIAGDIR_SE = 1, |
56 DIAGDIR_SW = 2, |
64 DIAGDIR_SW = 2, |
57 DIAGDIR_NW = 3, |
65 DIAGDIR_NW = 3, |
58 DIAGDIR_END, |
66 DIAGDIR_END, |
59 INVALID_DIAGDIR = 0xFF, |
67 INVALID_DIAGDIR = 0xFF, |
60 } DiagDirection; |
68 } DiagDirection; |
|
69 |
|
70 DECLARE_POSTFIX_INCREMENT(DiagDirection); |
|
71 |
|
72 /** Define basic enum properties */ |
|
73 template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR> {}; |
|
74 typedef TinyEnumT<DiagDirection> DiagDirectionByte; |
61 |
75 |
62 static inline DiagDirection ReverseDiagDir(DiagDirection d) |
76 static inline DiagDirection ReverseDiagDir(DiagDirection d) |
63 { |
77 { |
64 return (DiagDirection)(2 ^ d); |
78 return (DiagDirection)(2 ^ d); |
65 } |
79 } |