public bool IsSquareSafeForKing(Square desiredMove) { ChessSet enemySet = myChessSet.GetMyEnemyChessSet(); ChessPiece pieceOnDesiredMove = desiredMove.GetContainedPiece(); if (enemySet.IsSquareAttackedByMyPieces(desiredMove, currentSquare)) { return(false); } else if (enemySet.IsSquareAttackedByMyKing(desiredMove)) { return(false); } else if (pieceOnDesiredMove) { if (pieceOnDesiredMove.GetMyColorTag() != myPlayerColorTag && pieceOnDesiredMove.AmIProtectedByMyPieces()) { return(false); } } return(true); }