File diff r6124:7054f2e8fadf → r6125:eb40461cb765
src/direction.h
Show inline comments
 
/* $Id$ */
 

	
 
/** @file direction.h */
 

	
 
#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_NE  = 1,      ///< Northeast, upper right on your monitor
 
	DIR_E   = 2,
 
	DIR_SE  = 3,
 
	DIR_S   = 4,
 
	DIR_SW  = 5,
 
	DIR_W   = 6,
 
	DIR_NW  = 7,
 
	DIR_END,
 
	INVALID_DIR = 0xFF,
 
} Direction;
 

	
 
/** Define basic enum properties */
 
template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {};
 
@@ -50,25 +52,25 @@ static inline DirDiff ChangeDirDiff(DirD
 
}
 

	
 

	
 
static inline Direction ChangeDir(Direction d, DirDiff delta)
 
{
 
	return (Direction)((d + delta) % 8);
 
}
 

	
 

	
 
/* 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_NE  = 0,      ///< Northeast, upper right on your monitor
 
	DIAGDIR_SE  = 1,
 
	DIAGDIR_SW  = 2,
 
	DIAGDIR_NW  = 3,
 
	DIAGDIR_END,
 
	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;