Ejemplo n.º 1
0
 //마우스를 올렸을때 카드 회전, 확대
 void OnMouseOver()
 {
     if (!isOnDropZone && card.isDraggable && !mousePointFollow && HandingManager.Instance.endDraw && !HandingManager.Instance.dragCard && !mouseOver && !avoidOverlap)
     {
         mouseOver = true;
         transform.SetAsLastSibling();
         ChangeTransform(ObjectControl.RotationAngle(gameObject, 0f), HandingManager.Instance.cardMaxSize + 0.5f, new Vector3(transform.localPosition.x, yPos2BeExtended, -1f));
         HandingManager.Instance.ExpandGapSelectedCard(card.order);
     }
 }
Ejemplo n.º 2
0
 //마우스를 치웠을때 카드 회전, 축소
 void OnMouseExit()
 {
     if (!isOnDropZone && card.isDraggable && !mousePointFollow && HandingManager.Instance.endDraw && !HandingManager.Instance.dragCard && !avoidOverlap)
     {
         transform.SetSiblingIndex(GetComponent <Card>().order);
         ChangeTransform(ObjectControl.RotationAngle(gameObject, card.angle), HandingManager.Instance.cardMaxSize, card.targetPos);
         HandingManager.Instance.RollBackGapCards(card.order);
     }
     mouseOver = false;
 }
Ejemplo n.º 3
0
 //cardList의 모든 카드를 각각의 targetPos로 이동시키고 angle만큼 회전시킨다.
 public void SortAllCard()
 {
     for (int i = 0; i < cardList.Count; i++)
     {
         SetAngleToCard(i);
         SetCurveRate(i);
         SortCard(0.3f, i);
         StartCoroutine(ObjectControl.RotationToC(0.1f, new Vector3(0f, 0f, ObjectControl.RotationAngle(cardList[i].gameObject, cardList[i].angle)), cardList[i].gameObject));
     }
 }
Ejemplo n.º 4
0
    //time 시간동안 Card를 베지어 곡선에 따라 이동하여, 뽑을 카드 더미에 card.init 데이터를 전달한 후, card.GameObject를 Destroy한다.
    private IEnumerator ReloadCardC(float time, Card card)
    {
        float   h    = Random.Range(-2, 3) * 80;
        float   addH = 3 * 80;
        float   x    = discardPile.transform.localPosition.x + (deck.transform.localPosition.x - discardPile.transform.localPosition.x) / 5;
        Vector3 r1   = new Vector3(x, discardPile.transform.localPosition.y + addH + h, 0f);
        Vector3 r2   = new Vector3(x, discardPile.transform.localPosition.y + addH, 0f);

        StartCoroutine(ObjectControl.RotationToC(time, new Vector3(0f, 0f, ObjectControl.RotationAngle(card.gameObject, 120f)), card.gameObject));
        yield return(StartCoroutine(ObjectControl.CurveMoveObjC(time, discardPile.transform.localPosition, r1, r2, deck.transform.localPosition, card.gameObject)));

        deck.AddToPile(card.init);
        Destroy(card.gameObject, 0.5f);
    }
Ejemplo n.º 5
0
 public void OnEndDrag(PointerEventData eventData)
 {
     if (HandingManager.Instance.endDraw && mousePointFollow)
     {
         mousePointFollow = false;
         transform.SetParent(handTf);
         transform.SetSiblingIndex(card.order);//히에라키에서 순서 변경.
         if (!isOnDropZone)
         {
             ChangeTransform(ObjectControl.RotationAngle(gameObject, card.angle), HandingManager.Instance.cardMaxSize, card.targetPos);
             HandingManager.Instance.RollBackGapCards(card.order);
             StartCoroutine(Timer(0.1f));
         }
         GetComponent <CanvasGroup>().blocksRaycasts = true;
         HandingManager.Instance.dragCard            = false;
     }
 }
Ejemplo n.º 6
0
    //손패의 모든 카드를 버리고 리스트를 비운 다음 드로우 루틴을 실행.
    private IEnumerator DropAllCardC()
    {
        float time = 0.7f;

        foreach (Card card in cardList)
        {
            StartCoroutine(ObjectControl.ChangeSizeC(time, new Vector3(cardMinSize, cardMinSize, 0f), card.gameObject));
            StartCoroutine(ObjectControl.RotationToC(time, new Vector3(0f, 0f, ObjectControl.RotationAngle(card.gameObject, -180f)), card.gameObject));
            StartCoroutine(DropCardC(time, card, card.transform.localPosition, dropP1.localPosition, dropP2.localPosition, discardPile.transform.localPosition));
        }
        if (cardList.Count > 0)
        {
            yield return(new WaitForSeconds(time + 0.5f));
        }
        cardList.Clear();
        StartCoroutine(DrawRoutineC());
    }
Ejemplo n.º 7
0
    /// <summary>
    /// time 시간동안 cardList의 index에 해당하는 카드를 현재 위치에서 discardPile의 위치로 베지어 곡선을 따라 이동시킨다.
    /// </summary>
    public void DropCard(float time, int index)
    {
        Card card = cardList[index];

        cardList.RemoveAt(index);

        for (int i = card.order; i < cardList.Count; i++)
        {
            cardList[i].order--;
        }

        float y = 100f;
        float x = (discardPile.transform.localPosition.x - card.transform.localPosition.x) / 3;

        Vector3 p1 = new Vector3(card.transform.localPosition.x + x, card.transform.localPosition.y + y, 0f);
        Vector3 p2 = new Vector3(card.transform.localPosition.x + x * 2, card.transform.localPosition.y + y, 0f);

        StartCoroutine(ObjectControl.ChangeSizeC(time, new Vector3(cardMinSize, cardMinSize, 0f), card.gameObject));
        StartCoroutine(ObjectControl.RotationToC(time, new Vector3(0f, 0f, ObjectControl.RotationAngle(card.gameObject, -180f)), card.gameObject));
        StartCoroutine(DropCardC(time, card, card.transform.localPosition, p1, p2, discardPile.transform.localPosition));
    }