diff options
Diffstat (limited to 'src/direction_func.h')
-rw-r--r-- | src/direction_func.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/direction_func.h b/src/direction_func.h index 888948584..12aee5863 100644 --- a/src/direction_func.h +++ b/src/direction_func.h @@ -61,11 +61,11 @@ static inline Direction ReverseDir(Direction d) /** - * Calculate the difference between to directions + * Calculate the difference between two directions * * @param d0 The first direction as the base * @param d1 The second direction as the offset from the base - * @return The difference how the second directions drifts of the first one. + * @return The difference how the second direction drifts of the first one. */ static inline DirDiff DirDifference(Direction d0, Direction d1) { @@ -79,7 +79,7 @@ static inline DirDiff DirDifference(Direction d0, Direction d1) /** * Applies two differences together * - * This function adds two differences together and return the resulting + * This function adds two differences together and returns the resulting * difference. So adding two DIRDIFF_REVERSE together results in the * DIRDIFF_SAME difference. * @@ -123,6 +123,20 @@ static inline DiagDirection ReverseDiagDir(DiagDirection d) return (DiagDirection)(2 ^ d); } +/** + * Calculate the difference between two DiagDirection values + * + * @param d0 The first direction as the base + * @param d1 The second direction as the offset from the base + * @return The difference how the second direction drifts of the first one. + */ +static inline DiagDirDiff DiagDirDifference(DiagDirection d0, DiagDirection d1) +{ + assert(IsValidDiagDirection(d0)); + assert(IsValidDiagDirection(d1)); + /* Cast to uint so compiler can use bitmask. Result can never be negative. */ + return (DiagDirDiff)((uint)(d0 - d1) % 4); +} /** * Applies a difference on a DiagDirection |