private void ClickedBehaviour()
    {
        Debug.Log("Selected");
        gameController.SetIsPieceClicked();

        gameController.SetClickedPiece(gameObject);

        TableConstructor tableConstructor = TableConstructor.instance();

        List <List <Piece> > checkersPiecesPositions = gameController.GetCurrentTable().GetPiecesPosition();

        bool checkObjectController = true;
        int  indexOfList           = 0;

        while (checkObjectController)
        {
            if (checkersPiecesPositions[indexOfList].Contains(gameObject.GetComponent <Piece>()))
            {
                pieceRow              = indexOfList;
                pieceColumn           = checkersPiecesPositions[indexOfList].IndexOf(gameObject.GetComponent <Piece>());
                checkObjectController = false;
            }
            else if (indexOfList == checkersPiecesPositions.Count - 1)
            {
                checkObjectController = false;
            }
            else
            {
                indexOfList++;
            }
        }
        gameController.SetCurrentClickedPiece(gameObject.GetComponent <Piece>());
        gameController.SetOldPieceClickedPosition(pieceRow, pieceColumn);
        List <Piece> isPieceObligatedToEat = gameController.GetListOfPiecesAbleToEat();
    }
    public void OnMouseDown()
    {
        gameController = GameController.instance();
        Debug.Log(gameObject.GetComponent <BoardPiece>().IsPlayable());

        if (gameController.GetIsPieceClicked())
        {
            TableConstructor tableConstructor = TableConstructor.instance();

            if (gameObject.GetComponent <BoardPiece>().IsPlayable())
            {
                if (gameController.GetMandatoryEat() == true)
                {
                    gameController.SetNewBoardPosition(gameObject.GetComponent <BoardPiece>());
                    gameController.UpdateGameObjectBlockedDueMandatoryEat();
                    gameObject.GetComponent <BoardPiece>().SetPlayable();
                    gameController.DoesAIMustPlay();
                }
                else
                {
                    gameController.SetNewBoardPosition(gameObject.GetComponent <BoardPiece>());
                    gameController.UpdateGameObject();
                    gameController.DoesAIMustPlay();
                }
            }
        }
    }
    public void ConstructPieces()
    {
        piecesPosition  = new List <List <Piece> >();
        whitePiecesList = new List <Piece>();
        darkPiecesList  = new List <Piece>();

        TableConstructor tableContructorInstance = TableConstructor.instance();

        board        = tableContructorInstance.GetBoard();
        playbleBoard = tableContructorInstance.GetPlaybleArea();

        int          totalPieces          = board.GetSizeOfTable() * 3;
        int          columnValue          = 0;
        int          placeController      = totalPieces;
        int          rowValue             = 0;
        List <Piece> auxiliarPiecesList   = StartEmptyList();
        GameObject   pieceWhiteGameObject = Resources.Load <GameObject>("PieceWhite");
        GameObject   pieceBlackGameObject = Resources.Load <GameObject>("PieceBlack");


        while (placeController > 0)
        {
            if (tableContructorInstance.GetPlaybleArea()[rowValue][columnValue].IsPlayable())
            {
                if (rowValue < (tableContructorInstance.GetPlaybleArea().Count / 2 - 1))
                {
                    GameObject newPiece = Instantiate(pieceWhiteGameObject);
                    newPiece.name = (rowValue.ToString() + " " + columnValue.ToString());
                    newPiece.transform.position = tableContructorInstance.GetPlaybleArea()[rowValue][columnValue].transform.position;
                    tableContructorInstance.SetPlaybleTile(rowValue, columnValue);
                    newPiece.GetComponent <Piece>().SetKing(false);
                    newPiece.GetComponent <Piece>().SetIsUp(false);
                    newPiece.GetComponent <Piece>().SetBlackColor(false);
                    newPiece.GetComponent <Piece>().SetIsAvaiableToEat(true);
                    whitePiecesList.Add(newPiece.GetComponent <Piece>());
                    newPiece.GetComponent <MeshRenderer>().material = whiteMaterial;
                    board.UpdatePiecesPositionList(rowValue, columnValue, newPiece.GetComponent <Piece>());
                    placeController--;
                    auxiliarPiecesList[columnValue] = newPiece.GetComponent <Piece>();
                    totalWhitePieces++;
                }
                else if (rowValue > (tableContructorInstance.GetPlaybleArea().Count / 2))
                {
                    GameObject newPiece = Instantiate(pieceBlackGameObject);
                    newPiece.name = (rowValue.ToString() + " " + columnValue.ToString());
                    newPiece.transform.position = tableContructorInstance.GetPlaybleArea()[rowValue][columnValue].transform.position;
                    newPiece.GetComponent <Piece>().SetKing(false);
                    newPiece.GetComponent <Piece>().SetIsUp(true);
                    tableContructorInstance.SetPlaybleTile(rowValue, columnValue);
                    newPiece.GetComponent <Piece>().SetBlackColor(true);
                    newPiece.GetComponent <Piece>().SetIsAvaiableToEat(true);
                    darkPiecesList.Add(newPiece.GetComponent <Piece>());
                    newPiece.GetComponent <MeshRenderer>().material = grayMaterial;
                    board.UpdatePiecesPositionList(rowValue, columnValue, newPiece.GetComponent <Piece>());
                    placeController--;
                    auxiliarPiecesList[columnValue] = newPiece.GetComponent <Piece>();
                    totalBlackPieces++;
                }
            }

            if (columnValue < tableContructorInstance.GetPlaybleArea()[0].Count - 1)
            {
                columnValue++;
            }

            if (placeController % (tableContructorInstance.GetPlaybleArea()[0].Count / 2) == 0 && (!tableContructorInstance.GetPlaybleArea()[rowValue][columnValue].IsPlayable()))
            {
                if (rowValue < tableContructorInstance.GetPlaybleArea().Count)
                {
                    rowValue++;
                    piecesPosition.Add(auxiliarPiecesList);
                    auxiliarPiecesList = StartEmptyList();
                }
                columnValue = 0;
            }
        }
    }