Exemplo n.º 1
0
    public void ShowPlayerInfo(Vector3 pos3D, PlayerChair.Position chairPos, string message)
    {
        Debug.Log("ShowPlayerInfo");
        infoGroup.alpha = 1;

        RectTransform infoPanelRect = infoPanel.GetComponent <RectTransform>();

        /*Vector2 viewportPoint = uiCamera.WorldToViewportPoint(pos3D);
         * Vector2 pos2D = new Vector2(
         * ((viewportPoint.x * canvasRect.sizeDelta.x) - (canvasRect.sizeDelta.x * 0.5f)),
         * ((viewportPoint.y * canvasRect.sizeDelta.y) - (canvasRect.sizeDelta.y * 0.5f)));
         *
         * infoPanelRect.anchoredPosition = pos2D;*/

        GameUtils.SetPosition2D(pos3D, infoPanelRect, uiCamera, canvas);

        Vector3 rectPos = infoPanelRect.position;
        float   move    = 25f / pixelsPerUnit;

        float duration = 1f;

        switch (chairPos)
        {
        case PlayerChair.Position.West:
            infoPanelRect.pivot = new Vector2(0f, 0.5f);
            infoPanelRect.DOMoveX(rectPos.x + move, duration);
            break;

        case PlayerChair.Position.North:
            infoPanelRect.pivot = new Vector2(0.5f, 1f);
            infoPanelRect.DOMoveX(rectPos.x + move, duration);
            break;

        case PlayerChair.Position.East:
            infoPanelRect.pivot = new Vector2(1f, 0.5f);
            infoPanelRect.DOMoveX(rectPos.x - move, duration);
            break;

        case PlayerChair.Position.South:
            infoPanelRect.pivot = new Vector2(0.5f, 0f);
            infoPanelRect.DOMoveY(rectPos.y + move, duration);
            break;
        }

        infoGroup.DOFade(0, duration * 0.5f).SetDelay(1f);

        infoText.text = message;
    }
Exemplo n.º 2
0
    public void RpcMoveCardsToPlay(CardData[] datas, HandType handType)
    {
        //move to middle
        int length = datas.Length;

        float cardsLength = cardDistance * length;
        float startPos    = -cardsLength * 0.5f;
        //Vector3 randomVariation = new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f), 0);
        float duration = 0.2f;

        Card[] stackCards = new Card[length];

        for (int i = 0; i < length; i++)
        {
            try
            {
                Card card = handCards.Find(c => c.cardData.value == datas[i].value);

                PlayerChair.Position chairPos = player.chair.GetChairPosition();

                if (chairPos == PlayerChair.Position.West || chairPos == PlayerChair.Position.East)
                {
                    card.transform.DOMove(new Vector3(0, startPos + i * cardDistance, 0), duration);
                }
                else
                {
                    card.transform.DOMove(new Vector3(startPos + i * cardDistance, 0, 0), duration);
                }

                card.GetComponent <SpriteRenderer>().sortingOrder = GameManager.Instance.stackSortingOrder++;

                if (!isLocalPlayer)
                {
                    if (!card.cardData.isShown)
                    {
                        card.Flip();
                    }
                }

                stackCards[i] = card;

                handCards.Remove(card);

                bool removed = cardDatas.Remove(card.cardData);

                if (!removed)
                {
                    CardData firstFound = cardDatas.FirstOrDefault(cd => cd.value == card.cardData.value);
                    cardDatas.Remove(firstFound);
                }
            }
            catch (Exception)
            {
                Debug.Log("exception card is: " + datas[i].rank + " of " + datas[i].suit);
                throw;
            }
        }

        AudioManager.Instance.PlaySFX("Place");

        if (length == 5)
        {
            if (handType != HandType.Invalid)
            {
                if (handType == HandType.Flush)
                {
                    StartCoroutine(ShowFlushFX(handType, datas[2].suit, duration));
                }
                else
                {
                    StartCoroutine(ShowHandFX(handType, duration));
                }
            }
        }

        playedHand.Clear();
        Deck.Instance.AddPlayedHandToStack(stackCards);
        SortRemainingCards();
    }