protected virtual bool WouldBeSuicideOrInvalidSelfMoveInCheck(Move move, Player player)
{
ChessUtilities.ThrowIfNull(move, nameof(move));
var copy = new AtomicChessGame(Board, player);
copy.ApplyMove(move, true);
bool ownKingIsGone = copy.KingIsGone(player);
bool otherKingIsGone = copy.KingIsGone(ChessUtilities.GetOpponentOf(player));
if (ownKingIsGone)
{
return(true);
}
else if (otherKingIsGone)
{
return(false);
}
else
{
return(copy.IsInCheck(player));
}
}