WIP
This commit is contained in:
parent
091cc99cb3
commit
424d348b2d
3 changed files with 31 additions and 0 deletions
4
Makefile
Normal file
4
Makefile
Normal file
|
@ -0,0 +1,4 @@
|
|||
|
||||
|
||||
all:
|
||||
cargo build
|
0
board/src/errors.rs
Normal file
0
board/src/errors.rs
Normal file
27
position/src/sight/rays.rs
Normal file
27
position/src/sight/rays.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
// Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
use chessfriend_bitboard::BitBoard;
|
||||
use chessfriend_core::{Direction, Square};
|
||||
|
||||
fn _find_ray_connecting_squares(origin_square: Square, target_square: Square) -> BitBoard {
|
||||
macro_rules! ray {
|
||||
($square:expr, $direction:expr) => {
|
||||
($direction, BitBoard::ray($square, $direction))
|
||||
};
|
||||
}
|
||||
|
||||
let target: BitBoard = target_square.into();
|
||||
match Direction::ALL
|
||||
.iter()
|
||||
.map(|direction| ray!(origin_square, *direction))
|
||||
.find(|(direction, &ray)| (ray & target).is_populated())
|
||||
{
|
||||
Some((direction, ray)) => {
|
||||
if let Some(first_occupied_square) = BitBoard::$occupied_squares(&(ray & $blockers)).next()
|
||||
let remainder = BitBoard::ray(first_occupied_square, direction);
|
||||
let attack_ray = ray & !remainder;
|
||||
attack_ray * ray
|
||||
}
|
||||
None => BitBoard::EMPTY,
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue