private void MakeCopyOfGameboard()
        {
            TempGameBoard.Clear();

            var pawns = GameBoard.Where(x => x is Pawn).ToList();

            pawns.ForEach(x => TempGameBoard.Add(new Pawn(x.PieceColor, new Point(x.CurrentPosition._PosX, x.CurrentPosition._PosY), x.hasBeenMoved)));

            var bishops = GameBoard.Where(x => x is Bishop).ToList();

            bishops.ForEach(x => TempGameBoard.Add(new Bishop(x.PieceColor, new Point(x.CurrentPosition._PosX, x.CurrentPosition._PosY))));

            var horses = GameBoard.Where(x => x is Horse).ToList();

            horses.ForEach(x => TempGameBoard.Add(new Horse(x.PieceColor, new Point(x.CurrentPosition._PosX, x.CurrentPosition._PosY))));

            var rooks = GameBoard.Where(x => x is Rook).ToList();

            rooks.ForEach(x => TempGameBoard.Add(new Rook(x.PieceColor, new Point(x.CurrentPosition._PosX, x.CurrentPosition._PosY), x.hasBeenMoved)));

            var queens = GameBoard.Where(x => x is Queen).ToList();

            queens.ForEach(x => TempGameBoard.Add(new Queen(x.PieceColor, new Point(x.CurrentPosition._PosX, x.CurrentPosition._PosY))));

            var kings = GameBoard.Where(x => x is King).ToList();

            kings.ForEach(x => TempGameBoard.Add(new King(x.PieceColor, new Point(x.CurrentPosition._PosX, x.CurrentPosition._PosY))));
        }
        private void RemovePotentialTakenEnemy(Pieces piece)
        {
            Pieces tempPiece = null;

            foreach (var EnemyPiece in TempGameBoard)
            {
                if (CompareMyPositionWithEnemyPosition(piece, EnemyPiece))
                {
                    tempPiece = EnemyPiece;
                    break;
                }
            }
            TempGameBoard.Remove(tempPiece);

            tempPiece = null;
            foreach (var EnemyPiece in Enemies)
            {
                if (CompareMyPositionWithEnemyPosition(piece, EnemyPiece))
                {
                    tempPiece = EnemyPiece;
                    break;
                }
            }
            Enemies.Remove(tempPiece);
        }
        // Check if current move is protected by allied piece and returns bool depending on true or false
        private bool WillIBeProtected(Move move, Pieces piece)
        {
            TempGameBoard.Remove(GetPieceFromTempBoard(piece));


            if (AmIProtected(move, piece.PieceColor) > 0)
            {
                RestoreTempGameBoard();
                return(true);
            }
            else
            {
                RestoreTempGameBoard();
                return(false);
            }
        }
 // separerar ennemies från allies, lägger dom i egna listor(för enkelhets skull. gör också så att man inte behöver ha fula checkar över allt)
 #region Seperate Enemies and Allies
 private List <Pieces> GetEnemies(Color color)
 {
     return(TempGameBoard.Where(P => P.PieceColor != color).ToList());
 }