コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
    /// <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);
    }