/// <summary> /// 清除指定卡组错误 /// </summary> /// <param name="cardGroupName"></param> public static void ClearCardGroupError(string cardGroupName) { UserCardGroup userCardGroup = gameManagerInstance.GetUserData().GetCardGroupByName(cardGroupName); //检测卡牌的数量 for (int i = userCardGroup.mainCardList.Count - 1; i >= 0; i--) { if (userCardGroup.GetMainCardCount() > DuelRuleManager.GetMainCardGroupNumberUpperLimit()) { userCardGroup.mainCardList.RemoveAt(i); } else { break; } } //检测是否存在未知卡牌 for (int i = userCardGroup.mainCardList.Count - 1; i >= 0; i--) { if (!gameManagerInstance.GetAllCardInfoList().ContainsKey(userCardGroup.mainCardList[i].cardNo)) { userCardGroup.mainCardList.RemoveAt(i); } } for (int i = userCardGroup.extraCardList.Count - 1; i >= 0; i--) { if (!gameManagerInstance.GetAllCardInfoList().ContainsKey(userCardGroup.extraCardList[i].cardNo)) { userCardGroup.extraCardList.RemoveAt(i); } } for (int i = userCardGroup.deputyCardList.Count - 1; i >= 0; i--) { if (!gameManagerInstance.GetAllCardInfoList().ContainsKey(userCardGroup.deputyCardList[i].cardNo)) { userCardGroup.deputyCardList.RemoveAt(i); } } //检测同名卡牌的数量 foreach (var item in userCardGroup.mainCardList) { if (item.number > DuelRuleManager.GetSameCardNumberUpperLimit()) { item.number = DuelRuleManager.GetSameCardNumberUpperLimit(); } } //检测禁卡的限制 gameManagerInstance.SaveUserData(); }
/// <summary> /// 检测卡组是否合法 /// </summary> /// <param name="cardGroupName"></param> /// <returns></returns> public static bool CheckCardGroupLegal(string cardGroupName) { UserCardGroup userCardGroup = gameManagerInstance.GetUserData().GetCardGroupByName(cardGroupName); //检测卡牌的数量 if (userCardGroup.mainCardList.Count > DuelRuleManager.GetMainCardGroupNumberUpperLimit()) { ShowMessage($"卡组:{cardGroupName}不合法。原因:卡牌的数量超过限制!"); return(false); } //检测是否存在未知卡牌 foreach (var item in userCardGroup.mainCardList) { if (!gameManagerInstance.GetAllCardInfoList().ContainsKey(item.cardNo)) { ShowMessage($"卡组:{cardGroupName}不合法。原因:主卡组存在未知卡牌{item.cardNo}!"); return(false); } } foreach (var item in userCardGroup.extraCardList) { if (!gameManagerInstance.GetAllCardInfoList().ContainsKey(item.cardNo)) { ShowMessage($"卡组:{cardGroupName}不合法。原因:额外卡组存在未知卡牌{item.cardNo}!"); return(false); } } foreach (var item in userCardGroup.deputyCardList) { if (!gameManagerInstance.GetAllCardInfoList().ContainsKey(item.cardNo)) { ShowMessage($"卡组:{cardGroupName}不合法。原因:副卡组存在未知卡牌{item.cardNo}!"); return(false); } } //检测同名卡牌的数量 foreach (var item in userCardGroup.mainCardList) { if (item.number > DuelRuleManager.GetSameCardNumberUpperLimit()) { ShowMessage($"卡组:{cardGroupName}不合法。原因:同名卡牌{item.cardNo}超过上限!"); return(false); } } //检测禁卡的限制 return(true); }
/// <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); }