Пример #1
0
    //////////////////////////////////////////////////////////////////////////
    // Update
    private void Update()
    {
        if (GameManager.GameActive == false || m_IsThrown == false)
        {
            return;
        }

        transform.position += m_DirectionVector * Time.deltaTime * m_CardSpeed;

        if (m_ValidThrow == true)
        {
            if (m_DestinationPlayer.NeedCard() && (transform.position - m_DestinationPlayer.transform.position).sqrMagnitude < VirtualPlayer.PLAYER_RADIUS * VirtualPlayer.PLAYER_RADIUS)
            {
                m_DestinationPlayer.GetCard(this);
            }
        }
    }
Пример #2
0
    //////////////////////////////////////////////////////////////////////////
    // OnEndDrag ( Interface )
    void IEndDragHandler.OnEndDrag(PointerEventData eventData)
    {
        // Allowed only on card in deck
        if (InDeck == false)
        {
            return;
        }

        // Interaction has benn locked
        if (GameManager.GameActive == false)
        {
            return;
        }

        // right button not alowed
        if (eventData.button == PointerEventData.InputButton.Right)
        {
            return;
        }

        // not valid during dealer phase
        if (GameManager.Instance.CurrentPhase == GameManager.GAMEPHASE.DEALER)
        {
            return;
        }


        float distance = Vector3.Distance(transform.position, m_StartDragPosition);

        if (distance < 20)
        {
            transform.position = m_StartDragPosition;
            return;
        }

        m_ImageBackground.raycastTarget = false;
        m_ImageForeground.raycastTarget = false;
        m_IsThrown        = true;
        m_DirectionVector = (transform.position - m_StartDragPosition).normalized;
        m_CardSpeed       = distance;

        for (int i = 0; i < GameManager.MAX_PLAYERS; i++)
        {
            VirtualPlayer player = VirtualPlayer.Players[i];

            // Giving card directly to a player
            if (player.NeedCard() && (Input.mousePosition - player.transform.position).sqrMagnitude < VirtualPlayer.PLAYER_RADIUS * VirtualPlayer.PLAYER_RADIUS)
            {
                player.GetCard(this);
                InDeck = false;
                m_DestinationPlayer = player;
                GameManager.Instance.Deck.Remove(gameObject);
                return;
            }

            // Throwing card
            Vector3 directionDectToPlayer = (player.transform.position - UI.Instance.Deck.transform.position);
            Vector3 directionDeckToCard   = (transform.position - UI.Instance.Deck.transform.position);

            if (Vector3.Angle(directionDectToPlayer, directionDeckToCard) < 10f)
            {
                m_ValidThrow        = true;
                m_DestinationPlayer = player;
                break;
            }
        }

        InDeck = false;
        transform.SetParent(transform.parent.parent);
    }