Exemplo n.º 1
0
        public void ParentToCanvas(Vector3 targetPosition)
        {
            if (IsOnline && hasAuthority)
            {
                CmdUnspawnCard();
            }
            CardStack prevParentStack = ParentCardStack;

            if (CurrentDragPhase == DragPhase.Drag)
            {
                prevParentStack.UpdateScrollRect(DragPhase.End, CurrentPointerEventData);
            }
            transform.SetParent(CardGameManager.Instance.CardCanvas.transform);
            transform.SetAsLastSibling();
            if (prevParentStack != null)
            {
                prevParentStack.OnRemove(this);
            }
            canvasGroup.blocksRaycasts           = false;
            ((RectTransform)transform).anchorMax = 0.5f * Vector2.one;
            ((RectTransform)transform).anchorMin = 0.5f * Vector2.one;
            ((RectTransform)transform).pivot     = 0.5f * Vector2.one;
            transform.position   = targetPosition;
            transform.localScale = Vector3.one;
        }
Exemplo n.º 2
0
        public void UpdateParentCardStackScrollRect()
        {
            CardStack cardStack = ParentCardStack;

            if (cardStack != null)
            {
                cardStack.UpdateScrollRect(CurrentDragPhase, CurrentPointerEventData);
            }
        }
Exemplo n.º 3
0
        public void UpdateCardStackPosition(Vector2 targetPosition)
        {
            CardStack cardStack = ParentCardStack;

            if (cardStack == null || (IsOnline && !hasAuthority))
            {
                return;
            }

            if (!cardStack.DoesImmediatelyRelease && (cardStack.type == CardStackType.Vertical || cardStack.type == CardStackType.Horizontal))
            {
                cardStack.UpdateScrollRect(CurrentDragPhase, CurrentPointerEventData);
            }
            else if (!IsStatic)
            {
                cardStack.UpdateLayout(transform as RectTransform, targetPosition);
            }

            if (!IsStatic)
            {
                if (cardStack.type == CardStackType.Area)
                {
                    transform.SetAsLastSibling();
                }

                Vector3[] stackCorners = new Vector3[4];
                ((RectTransform)cardStack.transform).GetWorldCorners(stackCorners);
                bool isOutYBounds = targetPosition.y <stackCorners[0].y || targetPosition.y> stackCorners[1].y;
                bool isOutXBounds = targetPosition.x <stackCorners[0].x || targetPosition.y> stackCorners[2].x;
                if ((cardStack.DoesImmediatelyRelease && !IsProcessingSecondaryDragAction) ||
                    (cardStack.type == CardStackType.Full && CurrentDragPhase == DragPhase.Begin) ||
                    (cardStack.type == CardStackType.Vertical && isOutXBounds) ||
                    (cardStack.type == CardStackType.Horizontal && isOutYBounds) ||
                    (cardStack.type == CardStackType.Area &&
                     (isOutYBounds || (PlaceHolder != null && PlaceHolder.parent != transform.parent))))
                {
                    ParentToCanvas(targetPosition);
                }
            }
        }