|
|
|
|
@ -207,11 +207,6 @@ pub(crate) struct BoardIndex {
|
|
|
|
|
pub y: usize,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Component, PartialEq, Clone, Default, Copy, Eq, Hash)]
|
|
|
|
|
pub(crate) struct Previous {
|
|
|
|
|
board_index: BoardIndex,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Component, PartialEq, Clone, Copy)]
|
|
|
|
|
pub(crate) enum Side {
|
|
|
|
|
A,
|
|
|
|
|
@ -367,7 +362,7 @@ impl Board {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
if valid_capture {
|
|
|
|
|
// You cannot move a piece from SideB->SideA when it was just moved from SideA->SideB
|
|
|
|
|
// You cannot move a piece from A to B and then back to A when it was just moved from SideA->SideB
|
|
|
|
|
// Move rejection is not allowed
|
|
|
|
|
let rejection = {
|
|
|
|
|
if let Some(Move {
|
|
|
|
|
@ -378,8 +373,8 @@ impl Board {
|
|
|
|
|
{
|
|
|
|
|
// TODO: I think this is more logic than we need to express
|
|
|
|
|
// the sentiment...
|
|
|
|
|
Board::side(*last_from) == Board::side(this_board_index)
|
|
|
|
|
&& Board::side(*last_to) == Board::side(current_board_index)
|
|
|
|
|
*last_from == this_board_index
|
|
|
|
|
&& *last_to == current_board_index
|
|
|
|
|
&& Board::side(this_board_index)
|
|
|
|
|
!= Board::side(current_board_index)
|
|
|
|
|
} else {
|
|
|
|
|
@ -485,8 +480,8 @@ fn setup_board(mut commands: Commands) {
|
|
|
|
|
inner: vec![
|
|
|
|
|
vec![
|
|
|
|
|
Some(Queen),
|
|
|
|
|
None, // Some(Queen),
|
|
|
|
|
None, // Some(Drone),
|
|
|
|
|
Some(Queen),
|
|
|
|
|
Some(Drone),
|
|
|
|
|
None,
|
|
|
|
|
None,
|
|
|
|
|
None,
|
|
|
|
|
@ -494,24 +489,24 @@ fn setup_board(mut commands: Commands) {
|
|
|
|
|
None,
|
|
|
|
|
],
|
|
|
|
|
vec![
|
|
|
|
|
None, // Some(Queen),
|
|
|
|
|
None, // Some(Drone),
|
|
|
|
|
None, // Some(Pawn),
|
|
|
|
|
None, // None,
|
|
|
|
|
None, // None,
|
|
|
|
|
None, // Some(Pawn),
|
|
|
|
|
None, // Some(Pawn),
|
|
|
|
|
None, // Some(Drone),
|
|
|
|
|
Some(Queen),
|
|
|
|
|
Some(Drone),
|
|
|
|
|
Some(Pawn),
|
|
|
|
|
None,
|
|
|
|
|
None,
|
|
|
|
|
Some(Pawn),
|
|
|
|
|
Some(Pawn),
|
|
|
|
|
Some(Drone),
|
|
|
|
|
],
|
|
|
|
|
vec![
|
|
|
|
|
None, // Some(Drone),
|
|
|
|
|
None, // Some(Pawn),
|
|
|
|
|
None, // Some(Pawn),
|
|
|
|
|
None, // None,
|
|
|
|
|
None, // None,
|
|
|
|
|
None, // Some(Pawn),
|
|
|
|
|
None, // Some(Drone),
|
|
|
|
|
None, // Some(Queen),
|
|
|
|
|
Some(Drone),
|
|
|
|
|
Some(Pawn),
|
|
|
|
|
Some(Pawn),
|
|
|
|
|
None,
|
|
|
|
|
None,
|
|
|
|
|
Some(Pawn),
|
|
|
|
|
Some(Drone),
|
|
|
|
|
Some(Queen),
|
|
|
|
|
],
|
|
|
|
|
vec![
|
|
|
|
|
None,
|
|
|
|
|
@ -519,8 +514,8 @@ fn setup_board(mut commands: Commands) {
|
|
|
|
|
None,
|
|
|
|
|
None,
|
|
|
|
|
None,
|
|
|
|
|
None, // Some(Drone),
|
|
|
|
|
None, // Some(Queen),
|
|
|
|
|
Some(Drone),
|
|
|
|
|
Some(Queen),
|
|
|
|
|
Some(Queen),
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
@ -578,14 +573,6 @@ pub(crate) fn update_board(
|
|
|
|
|
*played = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Track the last spot that a piece was at
|
|
|
|
|
fn track_previous_move(
|
|
|
|
|
events: Query<&BoardIndex, (With<Piece>, Changed<BoardIndex>)>,
|
|
|
|
|
mut commands: Commands,
|
|
|
|
|
) {
|
|
|
|
|
todo!()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Component)]
|
|
|
|
|
struct Endgame;
|
|
|
|
|
|
|
|
|
|
|