src/direction.h
branchcustombridgeheads
changeset 5650 aefc131bf5ce
parent 5643 3778051e8095
child 6268 4b5241e5dd10
--- a/src/direction.h	Thu Jan 11 13:41:16 2007 +0000
+++ b/src/direction.h	Mon Jan 15 20:14:06 2007 +0000
@@ -3,8 +3,11 @@
 #ifndef DIRECTION_H
 #define DIRECTION_H
 
+#include "helpers.hpp"
+
 /* Direction as commonly used in v->direction, 8 way. */
 typedef enum Direction {
+	DIR_BEGIN = 0,
 	DIR_N   = 0,
 	DIR_NE  = 1,      /* Northeast, upper right on your monitor */
 	DIR_E   = 2,
@@ -17,6 +20,10 @@
 	INVALID_DIR = 0xFF,
 } Direction;
 
+/** Define basic enum properties */
+template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {};
+typedef TinyEnumT<Direction> DirectionByte;
+
 static inline Direction ReverseDir(Direction d)
 {
 	return (Direction)(4 ^ d);
@@ -51,6 +58,7 @@
 
 /* Direction commonly used as the direction of entering and leaving tiles, 4-way */
 typedef enum DiagDirection {
+	DIAGDIR_BEGIN = 0,
 	DIAGDIR_NE  = 0,      /* Northeast, upper right on your monitor */
 	DIAGDIR_SE  = 1,
 	DIAGDIR_SW  = 2,
@@ -59,6 +67,12 @@
 	INVALID_DIAGDIR = 0xFF,
 } DiagDirection;
 
+DECLARE_POSTFIX_INCREMENT(DiagDirection);
+
+/** Define basic enum properties */
+template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR> {};
+typedef TinyEnumT<DiagDirection> DiagDirectionByte;
+
 static inline DiagDirection ReverseDiagDir(DiagDirection d)
 {
 	return (DiagDirection)(2 ^ d);