diff --git a/src/board/color.rs b/src/board/color.rs index a7af8b6..d71df67 100644 --- a/src/board/color.rs +++ b/src/board/color.rs @@ -1,4 +1,4 @@ -use super::Rank; +use super::{Direction, Rank}; /// An enum representing the color of a player. #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -65,6 +65,21 @@ impl Color { Self::Black => Rank::Second, } } + + /// Which way do pawns advance for this color. + #[inline(always)] + pub fn forward_direction(self) -> Direction { + match self { + Self::White => Direction::North, + Self::Black => Direction::South, + } + } + + /// Which way do the opponent's pawns advance for this color. + #[inline(always)] + pub fn backward_direction(self) -> Direction { + (!self).forward_direction() + } } impl std::ops::Not for Color {