22#ifndef ULTIMA4_MAP_DIRECTION_H
23#define ULTIMA4_MAP_DIRECTION_H
38#define MASK_DIR(dir) (1 << (dir))
39#define MASK_DIR_WEST (1 << DIR_WEST)
40#define MASK_DIR_NORTH (1 << DIR_NORTH)
41#define MASK_DIR_EAST (1 << DIR_EAST)
42#define MASK_DIR_SOUTH (1 << DIR_SOUTH)
43#define MASK_DIR_ADVANCE (1 << DIR_ADVANCE)
44#define MASK_DIR_RETREAT (1 << DIR_RETREAT)
45#define MASK_DIR_ALL (MASK_DIR_WEST | MASK_DIR_NORTH | MASK_DIR_EAST | MASK_DIR_EAST | MASK_DIR_SOUTH | MASK_DIR_ADVANCE | MASK_DIR_RETREAT)
47#define DIR_IN_MASK(dir,mask) ((1 << (dir)) & (mask))
48#define DIR_ADD_TO_MASK(dir,mask) ((1 << (dir)) | (mask))
49#define DIR_REMOVE_FROM_MASK(dir,mask) ((~(1 << (dir))) & (mask))
54Direction dirReverse(Direction dir);
56Direction dirFromMask(
int dir_mask);
57Direction dirRotateCW(Direction dir);
58Direction dirRotateCCW(Direction dir);
65int dirGetBroadsidesDirs(Direction dir);
71Direction dirRandomDir(
int valid_directions_mask);
79Direction dirNormalize(Direction orientation, Direction dir);
84Direction keyToDirection(
int key);
89int directionToKey(Direction dir);