Ejemplo n.º 1
0
    bool CanPlayCard(CardSceneObj c)
    {
        bool canPlay = (owner.actions >= c.card.ActionCost &&
                        owner.mana >= c.card.ManaCost || !c.isWaitingToPlay);

        return(canPlay);
    }
Ejemplo n.º 2
0
    public bool DrawCard()
    {
        if (drawDeck.Count == 0)
        {
            Debug.Log("Draw Card Fail : Nothing Left in draw deck");
            drawDeck.AddRange(discardPile.ToArray());
            discardPile.Clear();
        }

        if (drawDeck.Count == 0)
        {
            Debug.Log("Draw Card Fail : Nothing in draw deck or discard pile, the player has no cards (!!!???!)");
            return(false);
        }

        CardSceneObj c = drawDeck[0];

        hand.AddCard(c);
        drawDeck.Remove(c);
        Debug.Log("CARD DRAWN! : " + c.card.Name);

        hand.UpdateDeckSizes();

        //statUI.SetStats(hero);

        return(true);
    }
Ejemplo n.º 3
0
    IEnumerator PlayCards()
    {
        Debug.Log("Play Cards Start");

        turnState = TurnState.PlayCards;

        bool isPlaying = false;

        do
        {
            // -- loop cards in card queue
            if (cardQueue.Count > 0 && !isPlaying)
            {
                CardSceneObj card = cardQueue.Dequeue();
                isPlaying = true;
                Debug.Log("Got Card To Play..." + " card : " + card.card.Name + " of " + cardQueue.Count);

                yield return(StartCoroutine(card.PlayCard()));

                isPlaying = false;
                yield return(null);
            }
            yield return(null);
        }while (turnState == TurnState.PlayCards || cardQueue.Count > 0);

        Debug.Log("Play Cards End");

        StartCoroutine(RunEndTurn());

        yield return(null);
    }
Ejemplo n.º 4
0
    public void AddCardToExhaustPile(CardSceneObj card)
    {
        owner.exhaustPile.Add(card.card);
        exhausePileSizeText.text = owner.exhaustPile.Count.ToString();
        //card.gameObject.SetActive(false);

        Vector3       targetPos = Vector3.zero;
        RectTransform rt        = card.GetComponent <RectTransform>();

        targetPos.z = 10000;
        rt.position = targetPos;
    }
Ejemplo n.º 5
0
 void CreateDeck()
 {
     currentDeck = initialDeck;
     for (int cLoop = 0; cLoop < initialDeck.cards.Count; cLoop++)
     {
         CardSceneObj  c  = CardManager.instance.GetCard();
         RectTransform rt = c.GetComponent <RectTransform>();
         rt.SetParent(hand.handTransform);
         rt.position = hand.startTransform.position;
         c.GetComponent <CardSceneObj>().SetupCard(initialDeck.cards[cLoop]);
         drawDeck.Add(c.GetComponent <CardSceneObj>());
     }
 }
Ejemplo n.º 6
0
    public void UpdateDrag(PointerEventData eventData, CardSceneObj card)
    {
        // show target at mouse cursor.
        target.GetComponent <RectTransform>().position = eventData.position;

        // keep card locked in highlighted position

        // -- what are we over? show color change.
        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(eventData.position);

        if (Physics.Raycast(ray, out hit, 1000))
        {
            if (hit.transform.gameObject.tag == "Player")
            {
                // hit player
                target.GetComponent <Image>().color = Color.red;
            }
            else if (hit.transform.gameObject.tag == "Enemy")
            {
                // hit player
                target.GetComponent <Image>().color = Color.green;
            }
            else
            {
                // hit nowt
                target.GetComponent <Image>().color = Color.gray;
            }
        }

        // -- if we go below y threshold cancel the drag
        if (eventData.position.y < CARD_DRAG_THRESHOLD && goneBeyondThreshold)
        {
            EndDrag(eventData, card);
        }

        // -- show dotted curve between card and cursor

        // -- check beyond threshold
        if (eventData.position.y > CARD_DRAG_THRESHOLD)
        {
            goneBeyondThreshold = true;
        }
    }
Ejemplo n.º 7
0
 public void SetHoveredCard(CardSceneObj card)
 {
     if (card == null || card.isDragged)
     {
         hoveredCard      = null;
         hoveredCardIndex = -1;
     }
     else
     {
         hoveredCardIndex = cards.IndexOf(card);
         for (int i = 0; i < cards.Count; i++)
         {
             cards[i].transform.SetSiblingIndex(i);
         }
         hoveredCard    = card;
         prevHoverIndex = hoveredCardIndex;
         cards[prevHoverIndex].gameObject.transform.SetAsLastSibling();
     }
 }
Ejemplo n.º 8
0
    public void AddCard(CardSceneObj c)
    {
        RectTransform rt = c.GetComponent <RectTransform>();

        rt.position = startTransform.position;
        //cardSceneObj.card = c;
        cards.Add(c);

        c.isWaitingToPlay = false;

        //gapSize = handWidth / cards.Count;

        //twistPerCard = totalTwist / cards.Count;
        //startTwist = -1f * (totalTwist / 2f);

        c.SetHand(this);

        //statUI.SetStats();
    }
Ejemplo n.º 9
0
 public void StartDrag(PointerEventData eventData, CardSceneObj card)
 {
     goneBeyondThreshold = false;
 }
Ejemplo n.º 10
0
    public void EndDrag(PointerEventData eventData, CardSceneObj card)
    {
        // -- if somehow we have managed to play card twice (OnDrop & OnDragEnd at once etc...)
        //if (card.isWaitingToPlay)
        //{
        //    return;
        //}

        // -- what are we over?
        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(eventData.position);

        if (Physics.Raycast(ray, out hit, 1000))
        {
            if (CanPlayCard(card))
            {
                if (hit.transform.gameObject.tag == "Player")
                {
                    // hit player
                    TurnController.instance.AddCardToPlayedQueue(card);
                    owner.actions       -= card.card.ActionCost;
                    owner.mana          -= card.card.ManaCost;
                    card.isWaitingToPlay = true;
                    cards.Remove(card);

                    Vector3       targetPos = Vector3.zero;
                    RectTransform rt        = card.GetComponent <RectTransform>();
                    targetPos.z = 10000;
                    rt.position = targetPos;

                    // -- Send to proper pile - done at end of sequence not at start
                    if (card.card.exhaust)
                    {
                        // -- send to exhaust pile
                        AddCardToExhaustPile(card);
                    }
                    else
                    {
                        // -- send to discard pile
                        AddCardToDiscardPile(card);
                    }

                    OnScreenDebug.instance.Log(card.card.Name);
                }
                else if (hit.transform.gameObject.tag == "Enemy")
                {
                    TurnController.instance.AddCardToPlayedQueue(card);
                    // hit enemy
                    owner.actions       -= card.card.ActionCost;
                    owner.mana          -= card.card.ManaCost;
                    card.isWaitingToPlay = true;

                    cards.Remove(card);

                    // -- Send to proper pile - done at end of sequence not at start
                    if (card.card.exhaust)
                    {
                        // -- send to exhaust pile
                        AddCardToExhaustPile(card);
                    }
                    else
                    {
                        // -- send to discard pile
                        AddCardToDiscardPile(card);
                    }

                    OnScreenDebug.instance.Log(card.card.Name);
                }
                else
                {
                    // hit nowt
                    if (card.card.TargetFlags == Card.Targets.None)
                    {
                        TurnController.instance.AddCardToPlayedQueue(card);
                        //card.PlayCard();
                        owner.actions       -= card.card.ActionCost;
                        owner.mana          -= card.card.ManaCost;
                        card.isWaitingToPlay = true;

                        cards.Remove(card);

                        Vector3       targetPos = Vector3.zero;
                        RectTransform rt        = card.GetComponent <RectTransform>();
                        targetPos.z = 10000;
                        rt.position = targetPos;

                        // -- Send to proper pile - done at end of sequence not at start
                        if (card.card.exhaust)
                        {
                            // -- send to exhaust pile
                            AddCardToExhaustPile(card);
                        }
                        else
                        {
                            // -- send to discard pile
                            AddCardToDiscardPile(card);
                        }

                        OnScreenDebug.instance.Log(card.card.Name);
                    }
                }
            }
        }

        card.isDragged = false;

        // owner.statUI.SetStats(owner);

        UpdateDeckSizes();
    }
Ejemplo n.º 11
0
    public void AddCardToPlayedQueue(CardSceneObj card)
    {
        Debug.Log("Card Added To Play Queue : " + card.card.Name);

        cardQueue.Enqueue(card);
    }