public void AddCard(CardTable data) { if (ControlledDeckData.CardCount < 30) { UserCardData cardData = ControlledDeckData.DeckCards.Find((ucd) => ucd.cardIndex == data._Index); DeckElement element; if (cardData == null) { element = DeckElement.CreateDeckElement(Content.transform); cardData = new UserCardData(data._Index, 1); ControlledDeckData.DeckCards.Add(cardData); DisplayDeckElementList.Add(element); element.SetCardData(cardData); SortingElement(); } else { cardData.cardCount++; element = DisplayDeckElementList.Find((de) => de.CardData == data); element.SetCardData(cardData); } ControlledDeckData.CardCount++; DeckCardCountText.text = ControlledDeckData.CardCount + "/30"; //add anim } }
void SettingUIDisplayMode() { UserCardData userCard = UserData.Instance.OwnedCardList.Find((usd) => usd.cardIndex == Owner.CardData.Data._Index); UserCardData deckCard = DeckBuildingUIInterface.Instance.DeckView.ControlledDeckData.DeckCards.Find((card) => card.cardIndex == Owner.CardData.Data._Index); int alreadyInDeckCount = deckCard?.cardCount ?? 0; if (userCard != null) { CardCount = userCard.cardCount; } //non have card if (userCard == null) { Owner.GrayScaleValue = 1f; Owner.AlphaValue = 0.7f; currentDisplayType = CardListElementDisplayType.E_NonOwned; } //non equit more card else if (alreadyInDeckCount == Mathf.Min(3, CardCount)) { currentDisplayType = CardListElementDisplayType.E_NonMoreEquited; Owner.GrayScaleValue = 0f; Owner.AlphaValue = 0.3f; } else { Owner.GrayScaleValue = 0f; Owner.AlphaValue = 1f; currentDisplayType = CardListElementDisplayType.E_Idle; } }
public void RemoveCard(DeckElement element) { UserCardData cardData = ControlledDeckData.DeckCards.Find((ucd) => ucd.cardIndex == element.CardData._Index); if (cardData.cardCount == 1) { ControlledDeckData.DeckCards.Remove(cardData); DisplayDeckElementList.Remove(element); Destroy(element.gameObject); // temp SortingElement(); } else { cardData.cardCount--; element.SetCardData(cardData); } ControlledDeckData.CardCount--; DeckCardCountText.text = ControlledDeckData.CardCount + "/30"; //remove Anim DeckBuildingUIInterface.Instance.CardView.SettingCard(); }
/// <summary> /// 向指定卡组添加卡牌 /// </summary> /// <param name="cardGroupType"></param> /// <param name="card"></param> public bool AddCardToCardGroup(CardGroupType cardGroupType, CardBase card) { if (cardGroup == null) { Debug.LogError("在向卡组中添加卡牌时没有找到卡组:" + currentCardGroupName); return(false); } int cardNumberLimit = DuelRuleManager.GetSameCardNumberUpperLimit(); List <UserCardData> typrCardGroup = null; switch (cardGroupType) { case CardGroupType.Unknown: Debug.LogError("未知卡组类型!"); return(false); case CardGroupType.Main: typrCardGroup = cardGroup.mainCardList; break; case CardGroupType.Extra: typrCardGroup = cardGroup.extraCardList; break; case CardGroupType.Deputy: typrCardGroup = cardGroup.deputyCardList; break; default: break; } UserCardData userCardData = null; foreach (var item in typrCardGroup) { if (item.cardNo == card.GetCardNo()) { userCardData = item; } } if (userCardData == null) { userCardData = new UserCardData(); userCardData.cardNo = card.GetCardNo(); userCardData.number = 1; typrCardGroup.Add(userCardData); } else { if (userCardData.number >= cardNumberLimit) { GameManager.ShowMessage("卡组中" + card.GetName() + "数量超过最大值!"); return(false); } else { userCardData.number++; } } switch (cardGroupType) { case CardGroupType.Unknown: break; case CardGroupType.Main: ResetMainCardGroup(); break; case CardGroupType.Extra: ResetExtraCardGroup(); break; case CardGroupType.Deputy: ResetDeputyCardGroup(); break; default: break; } return(true); }