Exemplo n.º 1
0
        public void OnBeginDrag(PointerEventData eventData)
        {
            if (!isFaceUp)
            {
                return;
            }

            if (movingCard != null)
            {
                return;
            }

            movingCard = this;

            // Save Drag Start Position for the translation animation
            dragStartPosition = rectTransform.position;
            // set the leaving spot for detaching the card
            leavingSpot = GetComponentInParent <IValidArea>();
            if (leavingSpot == null)
            {
                Debug.LogError("[Card] Detaching from unknown area");
            }

            // Disable Raycast on all childrens
            var childCanvases = GetComponentsInChildren <CanvasGroup>();

            foreach (var childCanvas in childCanvases)
            {
                childCanvas.blocksRaycasts = false;
            }
        }
Exemplo n.º 2
0
        public GameMove(IValidArea leavingSpot, IValidArea landingSpot, GameObject whichCard)
        {
            from = leavingSpot;
            to   = landingSpot;
            Card = whichCard;

            int pointsToAward;

            switch (landingSpot)
            {
            // From Waste to Tableu
            case var dummyvar when leavingSpot is Deck && landingSpot is Pile:
                pointsToAward = 5;
                MoveType      = MoveType.WASTE_TO_TABLEAU;
                break;

            // From Waste to a Foundation
            case var dummyvar when leavingSpot is Deck && landingSpot is Foundation:
                pointsToAward = 10;
                MoveType      = MoveType.WASTE_TO_FOUNDATION;
                break;

            // From Tableau to Foundation
            case var dummyvar when leavingSpot is Pile && landingSpot is Foundation:
                pointsToAward = 10;
                MoveType      = MoveType.TABLEAU_TO_FOUNDATION;
                break;

            // From Flipping a card
            case var dummyvar when leavingSpot == landingSpot && landingSpot is Pile:
                pointsToAward = 5;
                MoveType      = MoveType.FLIP;
                break;

            // From Foundation to Tableau
            case var dummyvar when leavingSpot is Foundation && landingSpot is Pile:
                pointsToAward = -15;
                MoveType      = MoveType.FOUNDATION_TO_TABLEAU;
                break;

            // From fetching a card
            case var dummyvar when leavingSpot == landingSpot && landingSpot is Deck && whichCard != null:
                pointsToAward = 0;
                MoveType      = MoveType.FETCH_CARD;
                break;

            // From recycling the deck
            case var dummyvar when leavingSpot == landingSpot && landingSpot is Deck && whichCard == null:
                pointsToAward = 0;
                MoveType      = MoveType.RECYCLE_WASTE;
                break;

            default:
                pointsToAward = 0;
                MoveType      = MoveType.NONE;
                break;
            }

            PointsAwarded = pointsToAward;
        }
Exemplo n.º 3
0
        public void OnPointerClick(PointerEventData eventData)
        {
            if (!isFaceUp)
            {
                return;
            }

            currentClickTime = eventData.clickTime;
            if (Mathf.Abs(currentClickTime - lastClickTime) < 0.75f)
            {
                leavingSpot = GetComponentInParent <IValidArea>();
                landingSpot = GameManager.Singleton.Hint(this);
                if (CanPerformMove())
                {
                    CreateMove();
                }
            }
            lastClickTime = currentClickTime;
        }