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; }
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(); }