Ejemplo n.º 1
0
    public void getOffCard(Card card)
    {
        if (isCardExist(card))
        {
            changeTopCard(card.DownCard);

            if (card == BottomCard)
            {
                _bottomCard = null;
            }

            card.getOffCard();
            card.foreachCardUp(x => x.DeckOn = null);

            if (TopCard != null)
            {
                int num = NumCard;

                TopCard.foreachCardDown(x => {
                    x.transform.localPosition =
                        Config.Instance.CardStackInitial + CardStackOffset * --num;
                });
            }
        }
    }
Ejemplo n.º 2
0
    //NOT TESTED YET

    /*
     * public BasicCard RemoveTopCard()
     * {
     *  BasicCard removedCard = cardsInPile.Pop();
     *
     *  //turn the new top card back on.
     *  cardsInPile.Peek().gameObject.SetActive(true);
     *
     *  return removedCard;
     * }
     */

    public List <BasicCard> EmptyTheStack()
    {
        //Deactivate the skills of the card being removed from the field.
        TopCard.DeactivateFieldSkills();
        classChanged = false;

        List <BasicCard> stackedCards = new List <BasicCard>(cardsInPile.Count);
        int size = cardsInPile.Count;

        //Debug.Log("Creating a List of " + size + " cards.");

        //Having the stack object and children deactivated while the cards are still children may be reseting the card's animators.
        //Try unparenting before deactivating the stack.
        for (int i = 0; i < size; i++)
        {
            cardsInPile.Peek().gameObject.SetActive(true);
            cardsInPile.Peek().gameObject.transform.SetParent(null, false);
            stackedCards.Add(cardsInPile.Pop());
            //Debug.Log("Gone through the popping loop.");
        }

        //Debug.Log("Returning a List of " + stackedCards.Count + " cards.  Note that the CardStack has " + cardsInPile.Count + " cards in it.");

        return(stackedCards);
    }
Ejemplo n.º 3
0
    public void putOnCard(Card card)
    {
        if (TopCard != null)
        {
            TopCard.putOnCard(card);
        }
        else
        {
            _bottomCard = card;
        }

        int num = NumCard;

        changeTopCard(card.TopCard);

        {
            int n = 0;

            card.foreachCardUp(x => {
                x.DeckOn = this;

                x.transform.SetParent(transform, false);
                x.transform.localScale    = Vector3.one;
                x.transform.localRotation = Quaternion.identity;
                x.transform.localPosition =
                    Config.Instance.CardStackInitial + CardStackOffset * (num + n++);
            });
        }

        card.foreachCardDown(x => {
            x.transform.localPosition =
                Config.Instance.CardStackInitial + CardStackOffset * --num;
        }, false);
    }
Ejemplo n.º 4
0
    void CardInstantiate(GameObject GmObj)
    {
        GameObject TopCard;

        TopCard      = (GameObject)Instantiate(GmObj);
        TopCard.name = GmObj.name;
        TopCard.GetComponent <PlayerCardInfo> ().MixCardChoice = true;
        TopCard.GetComponent <PlayerCardInfo> ().mwas          = GmObj.GetComponent <PlayerCardInfo>().mwas;
        TopCard.GetComponent <PlayerCardInfo> ().mCard         = GmObj.GetComponent <PlayerCardInfo>().mCard;
        TopCard.transform.parent     = dicMenuList ["TopCardLineCardMix"].transform;
        TopCard.transform.localScale = new Vector3(1, 1, 1);

        arrCardMixItemSelect.Add(TopCard);
        SelectCard(TopCard, false, false, false);

        for (int i = 0; i < SelectCardListPOS.Count; i++)
        {
            if (SelectCardListPOS [i] == false)
            {
                TopCard.transform.localPosition = arrTopCardVector [i];

                TopCard.GetComponent <PlayerCardInfo> ().MixOrderNum = i;
                SelectCardListPOS [i] = true;
                return;
            }
        }
    }
Ejemplo n.º 5
0
    void calculateNumCard()
    {
        _numCard = 0;

        if (TopCard != null)
        {
            TopCard.foreachCardDown(x => _numCard++);
        }
    }
Ejemplo n.º 6
0
 protected override void OnTake(CardController card)
 {
     base.OnTake(card);
     card.transform.Translate(Vector3.back * 3f);
     if (_stack.HasCards)
     {
         TopCard.Activate();
     }
 }
Ejemplo n.º 7
0
    public void OnCardDragUnhover()
    {
        Image imageToColor = image;

        if (NumberOfHeldCards > 0)
        {
            imageToColor = TopCard.GetComponent <Image>();
        }
        imageToColor.color = Color.white;
    }
Ejemplo n.º 8
0
 public void MoveTop(int count, CardZone cardZone)
 {
     count.Times(() =>
     {
         if (TopCard != null)
         {
             TopCard.MoveTo(cardZone);
         }
     });
 }
Ejemplo n.º 9
0
        public override CardStack MoveCardsFromTop(CardStack otherStack, int amount, bool flip = false, bool reverse = true)
        {
            CardStack result = base.MoveCardsFromTop(otherStack, amount, flip, reverse);

            if (!IsEmpty && TopCard.Flipped)
            {
                TopCard.Flip();
            }

            return(result);
        }
Ejemplo n.º 10
0
    public override void Remove(Card cardToRemove)
    {
        if (cardToRemove.transform.TryGetComponentsInChildrenExcludingSelf(out Card[] childCards))
        {
            foreach (Card childCard in childCards)
            {
                Cards.Remove(childCard);
            }
        }

        base.Remove(cardToRemove);

        if (Cards.Count > 0 && TopCard.CurrentlyShowingSide == CardSide.Back)
        {
            TopCard.ShowSide(CardSide.Front);
            // When a card gets flipped to the front, it will be saved in this history step.
            // This ensures that the card will be flipped back when the player undos this step.
            History.flippedCard = TopCard;
        }
    }
Ejemplo n.º 11
0
    public void OnCardDragHover(PlayingCard card)
    {
        Color hoverColor;

        if (CanAttachCard(card))
        {
            hoverColor = GameConfiguration.Instance.HoverEnabledColor;
        }
        else
        {
            hoverColor = GameConfiguration.Instance.HoverDisabledColor;
        }

        Image imageToColor = image;

        if (NumberOfHeldCards > 0)
        {
            imageToColor = TopCard.GetComponent <Image>();
        }
        imageToColor.color = hoverColor;
    }
Ejemplo n.º 12
0
    //NOT TESTED!
    //Unnecessary?

    /*
     * public void Setup(List<BasicCard> cardList)
     * {
     *  Debug.Log(cardList.Count + " cards will be used to crearte a new CardStack.");
     *
     *  for (int i = cardList.Count; i < 1; i--)
     *  {
     *      BasicCard cardToAdd = cardList[i - 1];
     *
     *      cardsInPile.Push(cardToAdd);
     *      Debug.Log(cardToAdd.ToString() + " has been added to the CardStack.");
     *
     *      //ensures that the card lands face up.
     *      if (!cardToAdd.FaceUp)
     *      {
     *          cardToAdd.FlipFaceUp();
     *      }
     *
     *      //deals with positioning
     *      cardToAdd.gameObject.transform.SetParent(null, false);
     *      cardToAdd.gameObject.transform.SetParent(transform, false);
     *
     *      cardToAdd.gameObject.SetActive(false);
     *  }
     *
     *  cardsInPile.Peek().gameObject.SetActive(true);
     * }
     */


    public void AddCardToStack(BasicCard card, bool classChange)
    {
        //disable the current top card
        TopCard.DeactivateFieldSkills();

        //disabling an object likely resets it's Animator (flip and tapped visual status).
        //Consider disabling it's renderer instead to make it invisible
        //NEED TO ADD: Ensure that the card to be disabled is faceUp and untapped.

        TopCard.gameObject.SetActive(false);

        //add the new card to the stack and activates its skills
        cardsInPile.Push(card);
        TopCard.ActivateFieldSkills();

        //updates the classChanged bool depending on how the new card is played.
        classChanged = classChange;

        //ensures that the card lands face up.
        if (!card.FaceUp)
        {
            card.FlipFaceUp();
        }

        //deals with positioning
        //cast the transform as a RectTransform to access more sophisticated methods.
        //Only necessary when there isn't an active Layout Group
        RectTransform cardTransform = card.gameObject.transform as RectTransform;

        cardTransform.SetParent(null, false);
        //places the card on the field in the correct location.
        cardTransform.SetParent(transform, false);
        cardTransform.anchorMax        = new Vector2(0.5f, 0.5f);
        cardTransform.anchorMin        = new Vector2(0.5f, 0.5f);
        cardTransform.anchoredPosition = Vector2.zero;
        //cardTransform.anchoredPosition = new Vector2(0.5f,0.5f);
    }
Ejemplo n.º 13
0
        public void Draw()
        {
            // Draw top card
            if (TopCard is not null)
            {
                _display.InsertArray(TopCard.GetGraphic(), 0, 60, Utils.CardToConsoleColor(TopCard.Color));
            }

            // Draw visible hand
            var cardsAfterIndex = Hand.Count - (VISIBLE_CARDS * VisibleIndex);

            for (var i = 0; i < (cardsAfterIndex < VISIBLE_CARDS ? cardsAfterIndex : VISIBLE_CARDS); i++)
            {
                var card = Hand[i + VisibleIndex * VISIBLE_CARDS];

                // Draw card
                _display.InsertArray(card.GetGraphic(), 30, HAND_OFFSET_LEFT + i * CardGraphics.CARDGRAPHIC_WIDTH + i, Utils.CardToConsoleColor(card.Color));

                // Draw selection number
                _display.WriteString("" + (i + 1), 30, HAND_OFFSET_LEFT + i * CardGraphics.CARDGRAPHIC_WIDTH + i + 5);
            }

            // Draw message
            _display.WriteString(Message, 45, 0, MessageColor);

            // Draw players
            DrawPlayers();

            // Draw local player name
            var drawnName = LocalPlayerName.Length > PLAYERNAME_MAX_VISIBLE_LENGTH
                ? LocalPlayerName.Substring(0, PLAYERNAME_MAX_VISIBLE_LENGTH)
                : LocalPlayerName;

            _display.WriteString("Playing as:", 0, 0);
            _display.WriteString(drawnName, 1, 0, ConsoleColor.DarkCyan);
        }
Ejemplo n.º 14
0
 public bool ValidDropPositionFor(CardController card) =>
 card.Seed == _seed &&
 !card.IsAPile() && (
     (!HasCards && card.Number == Number.A) ||
     (HasCards && TopCard.IsNextLowNumber(card))
     );