private Position[] AddCollisionHorse(ChessPiece CurrentPiece)
        {
            Position[]      allTurns = CurrentPiece.PossibleTurns().SelectMany(x => x).ToArray();
            List <Position> Builder  = new List <Position>();

            foreach (Position position in allTurns)
            {
                ChessPiece chessPiece = this[position];
                if (chessPiece != null)
                {
                    //Enemy
                    if (chessPiece.Color != CurrentPiece.Color)
                    {
                        Builder.Add(position);
                    }
                }
                else
                {
                    //Empty space
                    Builder.Add(position);
                }
            }

            return(Builder.ToArray());
        }
        //Collisions for these pieces are same
        private Position[] AddCollisionRookBishopQueenKing(ChessPiece CurrentPiece)
        {
            Position[][]    allTurns = CurrentPiece.PossibleTurns();
            List <Position> Builder  = new List <Position>();

            foreach (Position[] Direction in allTurns)
            {
                foreach (Position singlePosition in Direction)
                {
                    ChessPiece chessPiece = this[singlePosition];
                    if (chessPiece != null)
                    {
                        //Check if piece belongs to player or not
                        if (chessPiece.Color == CurrentPiece.Color)
                        {
                            break;
                        }
                        else
                        {
                            //Enemy
                            Builder.Add(singlePosition);
                            break;
                        }
                    }
                    else
                    {
                        //Empty space
                        Builder.Add(singlePosition);
                    }
                }
            }
            return(Builder.ToArray());
        }
        private Position[] AddCollisionPawn(ChessPiece CurrentPiece)
        {
            Position[]      allTurns = CurrentPiece.PossibleTurns().SelectMany(x => x).ToArray();
            List <Position> Builder  = new List <Position>();

            if (allTurns.Length == 0)
            {
                // Change to any piece except pawn and king
            }
            else
            {
                //Check forward, left forward, right forward

                foreach (Position forwardDirection in allTurns)
                {
                    if (this[forwardDirection] == null)
                    {
                        Builder.Add(forwardDirection);
                    }
                    else
                    {
                        break;
                    }
                }

                Position forward = allTurns[0];


                //If there're pieces right or left corners, take them.
                Position ForwardLeft = forward.ToLeft(CurrentPiece.Color);
                if (ForwardLeft.IsOnBoard())
                {
                    ChessPiece PieceForwardLeft = this[ForwardLeft];
                    if (PieceForwardLeft != null && PieceForwardLeft.Color != CurrentPiece.Color)
                    {
                        Builder.Add(ForwardLeft);
                    }
                }

                Position ForwardRight = forward.ToRight(CurrentPiece.Color);
                if (ForwardRight.IsOnBoard())
                {
                    ChessPiece PieceForwardRight = this[ForwardRight];
                    if (PieceForwardRight != null && PieceForwardRight.Color != CurrentPiece.Color)
                    {
                        Builder.Add(ForwardRight);
                    }
                }
            }
            return(Builder.ToArray());
        }