Esempio n. 1
0
    PlayableSpot GeneratePlayableSpot(Coordinate onCoordinate)
    {
        PlayableSpot newSpot = ObjectPooler.GetObject <PlayableSpot>(PlayableSpotPF, transform);

        newSpot.SetCoordinate(onCoordinate);
        PlayableSpots.Add(newSpot);
        return(newSpot);
    }
Esempio n. 2
0
    PlayableSpot GetHoveredSpot()
    {
        RaycastHit2D hit = Physics2D.Raycast(GetMouseLocation(), Vector2.zero, float.MaxValue, PlayableSpotLayer);

        if (hit.collider != null)
        {
            PlayableSpot hitSpot = hit.collider.gameObject.GetComponent <PlayableSpot>();
            return(hitSpot);
        }

        // If we're not mousing over a spot exactly, make an approximate boxcast using the dragged card
        if (DraggedCard != null)
        {
            Collider2D boxCheckSpot = Physics2D.OverlapBox(DraggedCard.transform.position, new Vector2(1f, 1.5f), 0, PlayableSpotLayer);

            if (boxCheckSpot != null)
            {
                PlayableSpot hitSpot = boxCheckSpot.gameObject.GetComponent <PlayableSpot>();
                return(hitSpot);
            }
        }

        return(null);
    }
Esempio n. 3
0
    private void Update()
    {
        if (DraggedCard != null)
        {
            PlayableSpot hoveredSpot = GetHoveredSpot();

            if (Input.GetMouseButton(0))
            {
                DraggedCard.transform.position = GetMouseLocation() + DraggingOffset + Vector3.back;

                if (previousHoveredSpot != hoveredSpot)
                {
                    if (previousHoveredSpot != null)
                    {
                        previousHoveredSpot.SetHovered(false);
                    }

                    previousHoveredSpot = hoveredSpot;

                    if (hoveredSpot != null)
                    {
                        hoveredSpot.SetHovered(true);
                    }
                }
            }
            else
            {
                if (previousHoveredSpot != null)
                {
                    previousHoveredSpot.SetHovered(false);
                    previousHoveredSpot = null;
                }

                if (hoveredSpot == null)
                {
                    DraggedCard.AnimateMovement(PickedUpFrom, DegreesOfSpeed.Quickly);
                    DraggedCard = null;
                    PlayFieldManagerInstance.UpdateValidityOfPlayableSpots(null);
                }
                else
                {
                    if (!PlayFieldManagerInstance.TryPlayerPlaysCard(DraggedCard, hoveredSpot.OnCoordinate))
                    {
                        DraggedCard.AnimateMovement(PickedUpFrom, DegreesOfSpeed.Quickly);
                        PlayFieldManagerInstance.UpdateValidityOfPlayableSpots(null);
                    }

                    DraggedCard = null;
                }
            }
        }
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                PlayingCard hoveredCard = GetHoveredCard();

                if (hoveredCard != null && hoveredCard.IsDraggable)
                {
                    DraggedCard    = hoveredCard;
                    PickedUpFrom   = hoveredCard.transform.position;
                    DraggingOffset = DraggedCard.transform.position - GetMouseLocation();
                    PlayFieldManagerInstance.UpdateValidityOfPlayableSpots(DraggedCard);
                }
            }
        }
    }