[core] Export Score::CENTIPAWNS_PER_POINT to the crate

This constant is a conversion factor of points to the internal fixed point unit
of centipawns. Points are more familiar to people because pawns are worth 1 pt.

Calculate the scores of the various piece shapes with this constant.
This commit is contained in:
Eryn Wells 2025-07-12 17:11:52 -07:00
parent b3ff8dec49
commit b505606925
2 changed files with 10 additions and 7 deletions

View file

@ -31,7 +31,7 @@ impl Score {
/// The maximum possible value of a score. /// The maximum possible value of a score.
pub const MAX: Score = Score(Value::MAX); pub const MAX: Score = Score(Value::MAX);
const CENTIPAWNS_PER_POINT: f32 = 100.0; pub(crate) const CENTIPAWNS_PER_POINT: f32 = 100.0;
#[must_use] #[must_use]
pub const fn new(value: Value) -> Self { pub const fn new(value: Value) -> Self {

View file

@ -75,13 +75,16 @@ impl Shape {
} }
#[must_use] #[must_use]
pub fn score(self) -> Score { pub const fn score(self) -> Score {
#[allow(clippy::cast_possible_truncation)]
const CP_PER_PT: i32 = Score::CENTIPAWNS_PER_POINT as i32;
match self { match self {
Shape::Pawn => Score::new(100), Shape::Pawn => Score::new(CP_PER_PT),
Shape::Knight | Shape::Bishop => Score::new(300), Shape::Knight | Shape::Bishop => Score::new(3 * CP_PER_PT),
Shape::Rook => Score::new(500), Shape::Rook => Score::new(5 * CP_PER_PT),
Shape::Queen => Score::new(900), Shape::Queen => Score::new(9 * CP_PER_PT),
Shape::King => Score::new(20000), Shape::King => Score::new(200 * CP_PER_PT),
} }
} }
} }