private void RPC_Turn(int turn, int countTile1, int countTile2)
    {
        PlayerInTurn      = turn;
        countTilesPlayer1 = countTile1;
        countTilesPlayer2 = countTile2;

        if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient)
        {
            textCountTiles.text = countTile2 + " fichas";
        }
        else
        {
            textCountTiles.text = countTile1 + " fichas";
        }

        if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient && PlayerInTurn == 1 || PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient && PlayerInTurn != 1)
        {
            msg.text = "Coloque una ficha";
            panelPlayer.transform.GetComponent <Image>().sprite = listImgPlayerTurn[1];;
            textInTurn.SetActive(false);
            textNext.SetActive(true);

            int countTiletoPut = 0;
            for (int i = 0; i < fichasPlayer1List.Count; i++)
            {
                FichaDosJugadoresOnline ficha = fichasPlayer1List[i].GetComponent <FichaDosJugadoresOnline>();
                if (!ficha.onTable)
                {
                    if (ficha.pointDown == countLeft || ficha.pointDown == countRight || ficha.pointUp == countLeft || ficha.pointUp == countRight)
                    {
                        GameObject childTile = fichasPlayer1List[i].transform.GetChild(0).gameObject;
                        childTile.GetComponent <SpriteRenderer>().sprite = fichasPlayer1List[i].GetComponent <FichaDosJugadoresOnline>().backsTile[1];
                        countTiletoPut++;
                    }
                    else
                    {
                        fichasPlayer1List[i].GetComponent <SpriteRenderer>().sprite = ficha.backsTile[0];
                    }
                }
            }

            if (countTiletoPut == 0)
            {
                msg.text = "No tienes fichas para jugar";
                classGeneral.tocToc.Play();
                countPase++;
                PV.RPC("RPC_CountPase", RpcTarget.Others, countPase);
                ValidateEnd();
                Invoke(nameof(ChangeTurn), 2);
            }
        }

        if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient && PlayerInTurn != 1 || PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient && PlayerInTurn == 1)
        {
            msg.text = "Espere su turno";
            panelPlayer.transform.GetComponent <Image>().sprite = listImgPlayerTurn[0];;
            textInTurn.SetActive(true);
            textNext.SetActive(false);
        }
    }
    public void MovedTile(GameObject nextTile)
    {
        FichaDosJugadoresOnline tile = nextTile.GetComponent <FichaDosJugadoresOnline>();

        if (classMatch.tileLeft == nextTile && colliderWall1)
        {
            if (doble)
            {
                StartCoroutine(RotTile(90, 90, -1.9f, 0, nextTile));
            }
            else
            {
                StartCoroutine(RotTile(90, 90, -1.45f, 0.45f, nextTile));
            }
            return;
        }
        if (classMatch.tileLeft == nextTile && colliderWall2)
        {
            if (doble)
            {
                StartCoroutine(RotTile(-90, 90, -1.9f, 0, nextTile));
            }
            else
            {
                StartCoroutine(RotTile(-90, 90, -1.45f, -0.45f, nextTile));
            }

            return;
        }
        if (classMatch.tileRight == nextTile && colliderWall1)
        {
            if (doble)
            {
                StartCoroutine(RotTile(-90, 90, 1.9f, 0, nextTile));
            }
            else
            {
                StartCoroutine(RotTile(-90, 90, 1.45f, 0.45f, nextTile));
            }
            return;
        }
        if (classMatch.tileRight == nextTile && colliderWall2)
        {
            if (doble)
            {
                StartCoroutine(RotTile(90, 90, 1.9f, 0, nextTile));
            }
            else
            {
                StartCoroutine(RotTile(90, 90, 1.45f, -0.45f, nextTile));
            }
        }
    }
    public void RPC_RotTile(int Up, int Down, int TableUp, int TableDown, int z, int x, float valueX, float valueZ)
    {
        FindTile(Up, Down, false);
        FindTile(TableUp, TableDown, true);

        FichaDosJugadoresOnline tile = currentTile.GetComponent <FichaDosJugadoresOnline>();

        if (!tile.doble)
        {
            var angles = currentTile.transform.rotation.eulerAngles;
            angles.x = x;
            angles.z = z;
            currentTile.transform.rotation = Quaternion.Euler(angles);
        }

        pos = new Vector3(tableTile.transform.position.x + valueX, tableTile.transform.position.y, tableTile.transform.position.z + valueZ);

        StartCoroutine(Movement(currentTile, false));
    }
    public void AuxStartGame(GameObject ficha, int turn)
    {
        if (ficha.GetComponent <FichaDosJugadoresOnline>().player == 1)
        {
            countTilesPlayer1--;
        }

        if (ficha.GetComponent <FichaDosJugadoresOnline>().player == 2)
        {
            countTilesPlayer2--;
        }

        PlayerInTurn = turn;
        ChangePanelPlayers();

        FichaDosJugadoresOnline tile = ficha.GetComponent <FichaDosJugadoresOnline>();

        tile.classMetodosOthers.StartMov(tile.pointUp, tile.pointDown);
    }
    public void RPC_MoveDoble(int Up, int Down, int TableUp, int TableDown, int a, bool collider1, bool collider2)
    {
        FindTile(Up, Down, false);
        FindTile(TableUp, TableDown, true);

        FichaDosJugadoresOnline tile        = currentTile.GetComponent <FichaDosJugadoresOnline>();
        FichaDosJugadoresOnline tileInTable = tableTile.GetComponent <FichaDosJugadoresOnline>();

        tileInTable.colliderWall1 = collider1;
        tileInTable.colliderWall2 = collider2;

        tile.inverse = !tile.inverse;

        if (a == 180)
        {
            a = 0;
        }
        if (a == 0)
        {
            a = 180;
        }

        if (classMatch.tileLeft == currentTile && tileInTable.colliderWall1 || classMatch.tileRight == currentTile && tileInTable.colliderWall1)
        {
            pos = new Vector3(tableTile.transform.position.x, tableTile.transform.position.y, tableTile.transform.position.z - 1.9f);
        }

        if (classMatch.tileLeft == currentTile && tileInTable.colliderWall2 || classMatch.tileRight == currentTile && tileInTable.colliderWall2)
        {
            pos = new Vector3(tableTile.transform.position.x, tableTile.transform.position.y, tableTile.transform.position.z + 1.9f);
        }

        var angl = currentTile.transform.rotation.eulerAngles;

        angl.z = a;
        angl.x = 90;
        currentTile.transform.rotation = Quaternion.Euler(angl);

        StartCoroutine(Movement(currentTile, false));
    }
    public void RPC_Move(int Up, int Down, int TableUp, int TableDown, int a, float mov, bool collider1, bool collider2)
    {
        FindTile(Up, Down, false);
        FindTile(TableUp, TableDown, true);

        FichaDosJugadoresOnline tile        = currentTile.GetComponent <FichaDosJugadoresOnline>();
        FichaDosJugadoresOnline tileInTable = tableTile.GetComponent <FichaDosJugadoresOnline>();

        tileInTable.colliderWall1 = collider1;
        tileInTable.colliderWall2 = collider2;

        if (a == 180)
        {
            tile.inverse = true;
        }

        tile.onTable         = true;
        classMatch.countPase = 0;

        currentTile.transform.SetParent(classMatch.table.transform);
        currentTile.transform.localScale = new Vector3(0.7f, 0.7f, 1);

        var angles = currentTile.transform.rotation.eulerAngles;

        angles.y = a;
        angles.x = 90;
        currentTile.transform.rotation = Quaternion.Euler(angles);

        pos = new Vector3(tableTile.transform.position.x, tableTile.transform.position.y, tableTile.transform.position.z + mov);

        if (collider1 && tileInTable.nocollider == false || collider2 && tileInTable.nocollider == false)
        {
            tile.nocollider = true;
            tile.moved      = true;

            if (collider1)
            {
                tile.colliderWall1 = true;
            }
            if (collider2)
            {
                tile.colliderWall2 = true;
            }

            return;
        }

        if (tileInTable.moved)
        {
            if (collider1)
            {
                tile.colliderWall1 = true;
            }
            if (collider2)
            {
                tile.colliderWall2 = true;
            }

            tile.nocollider = true;

            if (tile.doble)
            {
                tile.movedDoble = true;
            }

            return;
        }

        if (tileInTable.movedDoble)
        {
            if (collider1)
            {
                tile.colliderWall1 = true;
            }
            if (collider2)
            {
                tile.colliderWall2 = true;
            }

            tile.nocollider = true;

            return;
        }

        StartCoroutine(Movement(currentTile, false));
    }
    public void RPC_MovNexTile(int Up, int Down, int TableUp, int TableDown)
    {
        FindTile(Up, Down, false);
        FindTile(TableUp, TableDown, true);

        FichaDosJugadoresOnline tile        = currentTile.GetComponent <FichaDosJugadoresOnline>();
        FichaDosJugadoresOnline tileInTable = tableTile.GetComponent <FichaDosJugadoresOnline>();

        if (tableTile.transform.gameObject == classMatch.firstTile)
        {
            if (!tileInTable.closedUp && tileInTable.pointUp == tile.pointDown)
            {
                tileInTable.closedUp = true;
                tile.closedDown      = true;
                classMatch.countLeft = tile.pointUp;
                classMatch.tileLeft  = currentTile;

                return;
            }

            if (!tileInTable.closedUp && tileInTable.pointUp == tile.pointUp)
            {
                tileInTable.closedUp = true;
                tile.closedUp        = true;
                classMatch.countLeft = tile.pointDown;
                classMatch.tileLeft  = currentTile;

                return;
            }

            if (!tileInTable.closedDown && tileInTable.pointDown == tile.pointUp)
            {
                tileInTable.closedDown = true;
                tile.closedUp          = true;
                classMatch.tileRight   = currentTile;
                classMatch.countRight  = tile.pointDown;

                return;
            }

            if (!tileInTable.closedDown && tileInTable.pointDown == tile.pointDown)
            {
                tileInTable.closedDown = true;
                tile.closedDown        = true;
                classMatch.tileRight   = currentTile;
                classMatch.countRight  = tile.pointUp;
            }
        }
        else
        {
            if (!tileInTable.closedUp && !tileInTable.inverse && !tileInTable.doble && tileInTable.pointUp == tile.pointDown)
            {
                tileInTable.closedUp = true;
                tile.closedDown      = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointUp;
                }

                return;
            }

            if (!tileInTable.closedDown && tileInTable.inverse && !tileInTable.doble && tileInTable.pointDown == tile.pointDown)
            {
                tileInTable.closedDown = true;
                tile.closedDown        = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointUp;
                }

                return;
            }

            if (!tileInTable.closedDown && !tileInTable.inverse && !tileInTable.doble && tileInTable.pointDown == tile.pointUp)
            {
                tileInTable.closedDown = true;
                tile.closedUp          = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointDown;
                }

                return;
            }

            if (!tileInTable.closedUp && tileInTable.inverse && !tileInTable.doble && tileInTable.pointUp == tile.pointUp)
            {
                tileInTable.closedUp = true;
                tile.closedUp        = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointDown;
                }

                return;
            }

            if (!tileInTable.closedUp && !tileInTable.inverse && !tileInTable.doble && tileInTable.pointUp == tile.pointUp)
            {
                tileInTable.closedUp = true;
                tile.closedUp        = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointDown;
                }

                return;
            }

            if (!tileInTable.closedDown && tileInTable.inverse && !tileInTable.doble && tileInTable.pointDown == tile.pointUp)
            {
                tileInTable.closedDown = true;
                tile.closedUp          = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointDown;
                }

                return;
            }

            if (!tileInTable.closedDown && !tileInTable.inverse && !tileInTable.doble && tileInTable.pointDown == tile.pointDown)
            {
                tileInTable.closedDown = true;
                tile.closedDown        = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointUp;
                }

                return;
            }

            if (!tileInTable.closedUp && tileInTable.inverse && !tileInTable.doble && tileInTable.pointUp == tile.pointDown)
            {
                tileInTable.closedUp = true;
                tile.closedDown      = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointUp;
                }

                return;
            }

            if (!tileInTable.closedUp && tileInTable.doble && tileInTable.pointUp == tile.pointDown)
            {
                tileInTable.closedUp = true;
                tile.closedDown      = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointUp;
                }

                return;
            }

            if (!tileInTable.closedDown && tileInTable.doble && tileInTable.pointDown == tile.pointUp)
            {
                tileInTable.closedDown = true;
                tile.closedUp          = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointDown;
                }

                return;
            }

            if (!tileInTable.closedUp && tileInTable.doble && tileInTable.pointUp == tile.pointUp)
            {
                tileInTable.closedUp = true;
                tile.closedUp        = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointDown;
                }

                return;
            }

            if (!tileInTable.closedDown && tileInTable.doble && tileInTable.pointDown == tile.pointDown)
            {
                tileInTable.closedDown = true;
                tile.closedDown        = true;

                if (classMatch.tileLeft == tableTile)
                {
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = currentTile;
                }
                else
                {
                    classMatch.tileRight  = currentTile;
                    classMatch.countRight = tile.pointUp;
                }
            }
        }
    }
    public IEnumerator MoveDoble(GameObject nextTile, int a)
    {
        if (classMatch.PlayerInTurn == 1 && PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient ||
            classMatch.PlayerInTurn == 2 && PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient)
        {
            classMetodosOthers.PV.RPC("RPC_MoveDoble", RpcTarget.Others, nextTile.GetComponent <FichaDosJugadoresOnline>().pointUp, nextTile.GetComponent <FichaDosJugadoresOnline>().pointDown,
                                      pointUp, pointDown, a, colliderWall1, colliderWall2);

            FichaDosJugadoresOnline tile = nextTile.GetComponent <FichaDosJugadoresOnline>();
            tile.inverse = !tile.inverse;

            if (a == 180)
            {
                a = 0;
            }
            if (a == 0)
            {
                a = 180;
            }

            if (classMatch.tileLeft == nextTile && colliderWall1 || classMatch.tileRight == nextTile && colliderWall1)
            {
                pos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1.9f);
            }

            if (classMatch.tileLeft == nextTile && colliderWall2 || classMatch.tileRight == nextTile && colliderWall2)
            {
                pos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1.9f);
            }

            var angl = nextTile.transform.rotation.eulerAngles;
            angl.z = a;
            angl.x = 90;
            nextTile.transform.rotation = Quaternion.Euler(angl);

            float normalizedTime = 0.0f;
            classMatch.classGeneral.putTile.Play();

            while (normalizedTime < 1)
            {
                nextTile.transform.position = Vector3.Lerp(nextTile.transform.position, pos, normalizedTime);
                normalizedTime += Time.deltaTime / duration;
                yield return(null);
            }

            nextTile.transform.position = pos;

            if (classMatch.PlayerInTurn == 1 && PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient ||
                classMatch.PlayerInTurn == 2 && PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient)
            {
                classMatch.ChangeTilesToNormal();
            }

            yield return(new WaitForSeconds(1f));

            classMatch.noPlay = false;
            MatchDates.Instance.selectedFicha = null;
            classMatch.ValidateEnd();
            classMatch.ChangeTurn();
        }
    }
    private void OnMouseUpAsButton()
    {
        if (PhotonNetwork.PlayerList.Length == 2)
        {
            if (!classMatch.pause && !classMatch.panelOpened)
            {
                if (!onTable && classMatch.PlayerInTurn == 1 && !classMatch.noPlay && PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient ||
                    !onTable && classMatch.PlayerInTurn == 2 && !classMatch.noPlay && PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient)
                {
                    if (classMatch.startPlayer)
                    {
                        classMatch.noPlay      = true;
                        classMatch.startPlayer = false;

                        if (player == 1)
                        {
                            classMatch.countTilesPlayer1--;
                            classMatch.ChangeTilesToNormal();
                        }

                        if (player == 2)
                        {
                            classMatch.countTilesPlayer2--;
                        }

                        classMetodosOthers.PV.RPC("RPC_StartMov", RpcTarget.All, pointUp, pointDown, classMatch.PlayerInTurn, classMatch.countTilesPlayer1, classMatch.countTilesPlayer2);
                    }
                    else
                    {
                        GameObject childTileRight = classMatch.tileRight.transform.GetChild(0).gameObject;
                        childTileRight.GetComponent <SpriteRenderer>().sprite = classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                        GameObject childTileLeft = classMatch.tileLeft.transform.GetChild(0).gameObject;
                        childTileLeft.GetComponent <SpriteRenderer>().sprite = classMatch.tileLeft.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                        bool left  = false;
                        bool right = false;

                        if (pointDown == classMatch.countLeft || pointUp == classMatch.countLeft)
                        {
                            GameObject tileLeft = classMatch.tileLeft.transform.GetChild(0).gameObject;
                            tileLeft.GetComponent <SpriteRenderer>().sprite = classMatch.tileLeft.GetComponent <FichaDosJugadoresOnline>().backsTile[1];
                            left = true;
                        }

                        if (pointDown == classMatch.countRight || pointUp == classMatch.countRight)
                        {
                            GameObject tileRight = classMatch.tileRight.transform.GetChild(0).gameObject;
                            tileRight.GetComponent <SpriteRenderer>().sprite = classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().backsTile[1];
                            right = true;
                        }

                        if (!right && left || right && !left)
                        {
                            classMatch.noPlay  = true;
                            classMatch.capicua = false;

                            if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient)
                            {
                                classMatch.countTilesPlayer1--;
                            }
                            else
                            {
                                classMatch.countTilesPlayer2--;
                            }

                            GameObject childTileRight1 = classMatch.tileRight.transform.GetChild(0).gameObject;
                            childTileRight1.GetComponent <SpriteRenderer>().sprite = classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                            GameObject childTileLeft2 = classMatch.tileLeft.transform.GetChild(0).gameObject;
                            childTileLeft2.GetComponent <SpriteRenderer>().sprite = classMatch.tileLeft.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                            MatchDates.Instance.selectedFicha = transform.gameObject;

                            if (left)
                            {
                                classMatch.tileLeft.GetComponent <FichaDosJugadoresOnline>().MovNexTile(transform.gameObject);
                            }
                            else
                            {
                                classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().MovNexTile(transform.gameObject);
                            }
                        }

                        if (classMatch.countLeft == classMatch.countRight && left && right && classMatch.tileLeft != classMatch.tileRight)
                        {
                            classMatch.noPlay  = true;
                            classMatch.capicua = false;

                            if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient)
                            {
                                classMatch.countTilesPlayer1--;
                            }
                            else
                            {
                                classMatch.countTilesPlayer2--;
                            }

                            GameObject childTileRight1 = classMatch.tileRight.transform.GetChild(0).gameObject;
                            childTileRight1.GetComponent <SpriteRenderer>().sprite = classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                            GameObject childTileLeft2 = classMatch.tileLeft.transform.GetChild(0).gameObject;
                            childTileLeft2.GetComponent <SpriteRenderer>().sprite = classMatch.tileLeft.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                            MatchDates.Instance.selectedFicha = transform.gameObject;

                            classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().MovNexTile(transform.gameObject);
                        }

                        if (left || right)
                        {
                            if (classMatch.tileLeft == classMatch.tileRight)
                            {
                                classMatch.noPlay  = true;
                                classMatch.capicua = false;

                                if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient)
                                {
                                    classMatch.countTilesPlayer1--;
                                }
                                else
                                {
                                    classMatch.countTilesPlayer2--;
                                }

                                GameObject childFirstTile = classMatch.firstTile.transform.GetChild(0).gameObject;
                                childFirstTile.GetComponent <SpriteRenderer>().sprite = classMatch.firstTile.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                                MatchDates.Instance.selectedFicha = transform.gameObject;

                                classMatch.firstTile.GetComponent <FichaDosJugadoresOnline>().MovNexTile(transform.gameObject);
                            }
                        }

                        if (MatchDates.Instance.selectedFicha == null && left && right)
                        {
                            MatchDates.Instance.selectedFicha = transform.gameObject;
                        }
                    }
                }
                else if (onTable && classMatch.PlayerInTurn == 1 && PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient && MatchDates.Instance.selectedFicha != null ||
                         onTable && classMatch.PlayerInTurn == 2 && PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient && MatchDates.Instance.selectedFicha != null)
                {
                    if (transform.gameObject == classMatch.tileLeft || transform.gameObject == classMatch.tileRight)
                    {
                        classMatch.classGeneral.putTile.Play();
                        classMatch.noPlay = true;
                        GameObject childTileRight = classMatch.tileRight.transform.GetChild(0).gameObject;
                        childTileRight.GetComponent <SpriteRenderer>().sprite = classMatch.tileRight.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                        GameObject childTileLeft = classMatch.tileLeft.transform.GetChild(0).gameObject;
                        childTileLeft.GetComponent <SpriteRenderer>().sprite = classMatch.tileLeft.GetComponent <FichaDosJugadoresOnline>().backsTile[0];

                        FichaDosJugadoresOnline selectedFicha = MatchDates.Instance.selectedFicha.GetComponent <FichaDosJugadoresOnline>();

                        classMatch.capicua = false;

                        if (selectedFicha.pointDown == classMatch.countLeft && selectedFicha.pointUp == classMatch.countRight ||
                            selectedFicha.pointDown == classMatch.countRight && selectedFicha.pointUp == classMatch.countLeft)
                        {
                            classMatch.capicua = true;
                        }

                        if (PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient)
                        {
                            classMatch.countTilesPlayer1--;
                        }
                        else
                        {
                            classMatch.countTilesPlayer2--;
                        }

                        MovNexTile(MatchDates.Instance.selectedFicha);
                    }
                }
            }
        }
    }
    public IEnumerator Move(GameObject ficha, int a, float mov)
    {
        FichaDosJugadoresOnline tile = ficha.GetComponent <FichaDosJugadoresOnline>();

        if (classMatch.PlayerInTurn == 1 && PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient ||
            classMatch.PlayerInTurn == 2 && PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient)

        {
            classMetodosOthers.PV.RPC("RPC_Move", RpcTarget.Others, tile.pointUp, tile.pointDown, pointUp, pointDown, a, mov, colliderWall1, colliderWall2);

            if (a == 180)
            {
                tile.inverse = true;
            }

            tile.onTable         = true;
            classMatch.countPase = 0;

            ficha.transform.SetParent(classMatch.table.transform);
            ficha.transform.localScale = new Vector3(0.7f, 0.7f, 1);

            var angles = ficha.transform.rotation.eulerAngles;
            angles.y = a;
            angles.x = 90;
            ficha.transform.rotation = Quaternion.Euler(angles);

            pos = new Vector3(transform.position.x, transform.position.y, transform.position.z + mov);

            if (colliderWall1 && nocollider == false || colliderWall2 && nocollider == false)
            {
                tile.nocollider = true;
                tile.moved      = true;

                if (colliderWall1)
                {
                    tile.colliderWall1 = true;
                }
                if (colliderWall2)
                {
                    tile.colliderWall2 = true;
                }

                MovedTile(ficha);
                yield break;
            }

            if (moved)
            {
                if (colliderWall1)
                {
                    tile.colliderWall1 = true;
                }
                if (colliderWall2)
                {
                    tile.colliderWall2 = true;
                }

                tile.nocollider = true;

                if (tile.doble)
                {
                    tile.movedDoble = true;
                }

                StartCoroutine(TurnTile(ficha, a));
                yield break;
            }

            if (movedDoble)
            {
                if (colliderWall1)
                {
                    tile.colliderWall1 = true;
                }
                if (colliderWall2)
                {
                    tile.colliderWall2 = true;
                }

                tile.nocollider = true;

                StartCoroutine(MoveDoble(ficha, a));
                yield break;
            }

            float normalizedTime = 0.0f;
            classMatch.classGeneral.putTile.Play();

            while (normalizedTime < 1)
            {
                ficha.transform.position = Vector3.Lerp(ficha.transform.position, pos, normalizedTime);
                normalizedTime          += Time.deltaTime / duration;
                yield return(null);
            }

            ficha.transform.position = pos;
            classMatch.ChangeTilesToNormal();

            yield return(new WaitForSeconds(1f));

            classMatch.noPlay = false;
            MatchDates.Instance.selectedFicha = null;
            classMatch.ValidateEnd();
            classMatch.ChangeTurn();
        }
    }
    public void MovNexTile(GameObject nextTile) // ficha del jugador. Este método lo hace la ficha de la mesa
    {
        if (classMatch.PlayerInTurn == 1 && PhotonNetwork.LocalPlayer == PhotonNetwork.MasterClient ||
            classMatch.PlayerInTurn == 2 && PhotonNetwork.LocalPlayer != PhotonNetwork.MasterClient)
        {
            FichaDosJugadoresOnline tile = nextTile.GetComponent <FichaDosJugadoresOnline>();

            classMetodosOthers.PV.RPC("RPC_MovNexTile", RpcTarget.Others, tile.pointUp, tile.pointDown, pointUp, pointDown);

            if (transform.gameObject == classMatch.firstTile)
            {
                if (!closedUp && pointUp == tile.pointDown)
                {
                    closedUp             = true;
                    tile.closedDown      = true;
                    classMatch.countLeft = tile.pointUp;
                    classMatch.tileLeft  = nextTile;

                    if (tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 90, 1.45f));
                    }
                    if (!tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 0, 1.9f));
                    }
                    if (!tile.doble && doble)
                    {
                        StartCoroutine(Move(nextTile, 0, 1.45f));
                    }

                    return;
                }

                if (!closedUp && pointUp == tile.pointUp)
                {
                    closedUp             = true;
                    tile.closedUp        = true;
                    classMatch.countLeft = tile.pointDown;
                    classMatch.tileLeft  = nextTile;

                    if (tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 90, 1.45f));
                    }
                    if (!tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 180, 1.9f));
                    }
                    if (!tile.doble && doble)
                    {
                        StartCoroutine(Move(nextTile, 180, 1.45f));
                    }
                    return;
                }

                if (!closedDown && pointDown == tile.pointUp)
                {
                    closedDown            = true;
                    tile.closedUp         = true;
                    classMatch.tileRight  = nextTile;
                    classMatch.countRight = tile.pointDown;

                    if (tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 90, -1.45f));
                    }
                    if (!tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 0, -1.9f));
                    }
                    if (!tile.doble && doble)
                    {
                        StartCoroutine(Move(nextTile, 0, -1.45f));
                    }
                    return;
                }

                if (!closedDown && pointDown == tile.pointDown)
                {
                    closedDown            = true;
                    tile.closedDown       = true;
                    classMatch.tileRight  = nextTile;
                    classMatch.countRight = tile.pointUp;

                    if (tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 90, -1.45f));
                    }
                    if (!tile.doble && !doble)
                    {
                        StartCoroutine(Move(nextTile, 180, -1.9f));
                    }
                    if (!tile.doble && doble)
                    {
                        StartCoroutine(Move(nextTile, 180, -1.45f));
                    }
                }
            }
            else
            {
                if (!closedUp && !inverse && !doble && pointUp == tile.pointDown)
                {
                    closedUp        = true;
                    tile.closedDown = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointUp;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointUp;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, 1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 0, 1.9f));
                    }

                    return;
                }

                if (!closedDown && inverse && !doble && pointDown == tile.pointDown)
                {
                    closedDown      = true;
                    tile.closedDown = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointUp;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointUp;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, 1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 0, 1.9f));
                    }
                    return;
                }

                if (!closedDown && !inverse && !doble && pointDown == tile.pointUp)
                {
                    closedDown    = true;
                    tile.closedUp = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointDown;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointDown;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, -1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 0, -1.9f));
                    }
                    return;
                }

                if (!closedUp && inverse && !doble && pointUp == tile.pointUp)
                {
                    closedUp      = true;
                    tile.closedUp = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointDown;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointDown;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, -1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 0, -1.9f));
                    }
                    return;
                }

                if (!closedUp && !inverse && !doble && pointUp == tile.pointUp)
                {
                    closedUp      = true;
                    tile.closedUp = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointDown;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointDown;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, 1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 180, 1.9f));
                    }
                    return;
                }

                if (!closedDown && inverse && !doble && pointDown == tile.pointUp)
                {
                    closedDown    = true;
                    tile.closedUp = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointDown;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointDown;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, 1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 180, 1.9f));
                    }
                    return;
                }

                if (!closedDown && !inverse && !doble && pointDown == tile.pointDown)
                {
                    closedDown      = true;
                    tile.closedDown = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointUp;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointUp;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, -1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 180, -1.9f));
                    }
                    return;
                }

                if (!closedUp && inverse && !doble && pointUp == tile.pointDown)
                {
                    closedUp        = true;
                    tile.closedDown = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointUp;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointUp;
                    }

                    if (tile.doble)
                    {
                        StartCoroutine(Move(nextTile, 90, -1.45f));
                    }
                    else
                    {
                        StartCoroutine(Move(nextTile, 180, -1.9f));
                    }
                    return;
                }

                if (!closedUp && doble && pointUp == tile.pointDown)
                {
                    closedUp        = true;
                    tile.closedDown = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointUp;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointUp;
                    }

                    StartCoroutine(Move(nextTile, 0, 1.45f));
                    return;
                }

                if (!closedDown && doble && pointDown == tile.pointUp)
                {
                    closedDown    = true;
                    tile.closedUp = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointDown;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointDown;
                    }

                    StartCoroutine(Move(nextTile, 0, -1.45f));
                    return;
                }

                if (!closedUp && doble && pointUp == tile.pointUp)
                {
                    closedUp      = true;
                    tile.closedUp = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointDown;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointDown;
                    }

                    StartCoroutine(Move(nextTile, 180, 1.45f));
                    return;
                }

                if (!closedDown && doble && pointDown == tile.pointDown)
                {
                    closedDown      = true;
                    tile.closedDown = true;

                    if (classMatch.tileLeft == transform.gameObject)
                    {
                        classMatch.countLeft = tile.pointUp;
                        classMatch.tileLeft  = nextTile;
                    }
                    else
                    {
                        classMatch.tileRight  = nextTile;
                        classMatch.countRight = tile.pointUp;
                    }

                    StartCoroutine(Move(nextTile, 180, -1.45f));
                }
            }
        }
    }