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; }); } } }
//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); }
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); }
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; } } }
void calculateNumCard() { _numCard = 0; if (TopCard != null) { TopCard.foreachCardDown(x => _numCard++); } }
protected override void OnTake(CardController card) { base.OnTake(card); card.transform.Translate(Vector3.back * 3f); if (_stack.HasCards) { TopCard.Activate(); } }
public void OnCardDragUnhover() { Image imageToColor = image; if (NumberOfHeldCards > 0) { imageToColor = TopCard.GetComponent <Image>(); } imageToColor.color = Color.white; }
public void MoveTop(int count, CardZone cardZone) { count.Times(() => { if (TopCard != null) { TopCard.MoveTo(cardZone); } }); }
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); }
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; } }
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; }
//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); }
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); }
public bool ValidDropPositionFor(CardController card) => card.Seed == _seed && !card.IsAPile() && ( (!HasCards && card.Number == Number.A) || (HasCards && TopCard.IsNextLowNumber(card)) );