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