Add 'Color::{forward,backward}_direction'

This commit is contained in:
Bruno BELANYI 2022-07-18 17:27:09 +02:00
parent 0812d916ff
commit f3a83065da

View file

@ -1,4 +1,4 @@
use super::Rank; use super::{Direction, Rank};
/// An enum representing the color of a player. /// An enum representing the color of a player.
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
@ -69,6 +69,21 @@ impl Color {
Self::Black => Rank::Second, 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 { impl std::ops::Not for Color {