1pub(crate) mod files;
2pub(crate) mod historical_board;
3pub(crate) mod move_builder;
4pub(crate) mod piece;
5pub(crate) mod promotion;
6pub(crate) mod ranks;
7
8mod chessboard;
9pub use chessboard::{Action, Chessboard, ChessboardProps, PlayerColor};
10mod pieces;
11mod square;
12
13pub use pieces::PieceSet;
14
15use crate::historical_board::HistoricalBoard;
16use crate::move_builder::{MoveAction, MoveBuilder};
17use dioxus::prelude::{Readable, Signal, Writable};
18use owlchess::board::PrettyStyle;
19use tracing::debug;
20
21fn finalize(move_builder: &mut Signal<MoveBuilder>, board: &mut Signal<HistoricalBoard>) {
22 let finalized = {
24 let board = board.read();
25 move_builder.write().finalize(&board)
26 };
27
28 match finalized {
29 MoveAction::Apply(m) => {
30 debug!("Applying the move {m:?}");
31 board.write().make_move(m).expect("Move must be valid");
32 debug!("New board\n{}", board.read().pretty(PrettyStyle::Utf8));
33 }
34 MoveAction::Revert => {
35 debug!("Reverting the last move ");
36 let m = board.write().revert_last_move();
37 debug!(
38 "Move {m:?} has been reverted \nNew board\n{}\n",
39 board.read().pretty(PrettyStyle::Utf8)
40 );
41 }
42 MoveAction::None => {}
43 }
44}