Commit graph

17 commits

Author SHA1 Message Date
0c1863acb9 [board, core, moves, position] Implement castling
Implement a new method on Position that evaluates whether the active color can castle
on a given wing of the board. Then, implement making a castling move in the position.

Make a new Wing enum in the core crate to specify kingside or queenside. Replace the
Castle enum from the board crate with this one. This caused a lot of churn...

Along the way fix a bunch of tests.

Note: there's still no way to actually make a castling move in explorer.
2025-05-19 16:50:30 -07:00
3b5b2f16a3 [board] Add occupancy methods that return BitBoards 2025-05-16 07:47:28 -07:00
091cc99cb3 WIP 2025-05-08 17:37:51 -07:00
867deafd13 [board] A ton of API refinements 2025-05-03 16:02:56 -07:00
b0c4039920 [board] Remove Board::new() 2025-05-02 15:42:06 -07:00
bb8d5a6aa3 [board] Replace Flags with castle::Rights 2025-05-02 15:41:45 -07:00
cd60a453aa [board] Replace active player and move properties on Board with MoveCounter instance 2025-05-02 15:18:37 -07:00
30188d478e [board] Convert &BitBoard to BitBoard for several Board methods
I don't think passing by reference buys much for BitBoard. So simplify the
logic and borrowing semantics to make these easier to work with.
2024-07-13 12:03:19 -07:00
7ec72035ae [board] Remove en passant test helper method 2024-07-13 12:01:01 -07:00
d221de700d [board] Copy edit and add new documentation to Board 2024-07-13 12:00:02 -07:00
c297e4cbfa [board] Replace implementation of Board::piece_on_square with a simpler one
Now that board has a Mailbox, the implementation of this routine can be greatly
simplified. Instead of needing to iterate through all BitBoards to find the
occupied square, just consult the mailbox.
2024-07-13 11:57:57 -07:00
3785502ea0 [board] Declare Board::flags() pub(crate) instead of pub 2024-07-13 11:56:31 -07:00
26ae79e17d [board] Remove explicit #[inline] from several Board methods
Trust the compiler to inline where appropriate, until I know otherwise.
2024-07-13 11:54:58 -07:00
da4e2f1d50 [core] Use Color::default() instead of Color::White in Board::default() 2024-07-13 11:52:25 -07:00
90e33d1202 [board] Replace Pieces iterator with Mailbox::iter()
Mailbox can use a standard iterator because it's just a slice. So nice!
2024-07-13 11:52:02 -07:00
51de32fa0a [board] Update reference to PieceBitBoard → PieceSet
This isn't all of them...
2024-07-13 11:50:38 -07:00
1d82d27f84 Move a whole bunch of stuff to the new chessfriend_board package 2024-04-25 13:28:24 -07:00