pub(super) trait Piece: Send + Sync + DynClone + 'static + Component<Storage = TableStorage> {
// Required methods
fn get_type(&self) -> &PieceType;
fn get_color(&self) -> &PieceColor;
fn get_position(&self) -> &BoardPosition;
fn get_starting_position(&self) -> &BoardPosition;
fn set_position(&mut self, new_position: &BoardPosition);
fn get_moves(&self, include_captures: &bool) -> Vec<BoardPosition>;
fn valid_move(&self, end_position: &BoardPosition) -> bool;
fn valid_capture(&self, end_position: &BoardPosition) -> bool;
fn is_sliding(&self) -> bool;
}