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