Example #1
0
    internal void GetTempCardByCardTypes(CardFilterTypes cardFilterTypes, int count)
    {
        List <int> cardIds = AllCards.GetRandomCardInfoByCardFilterType(cardFilterTypes, count);

        foreach (int cardId in cardIds)
        {
            GetTempCardsByID(cardId, 1);
        }
    }
Example #2
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            CardFilterTypes dropCardType = (CardFilterTypes)M_SideEffectParam.GetParam_ConstInt("DropCardType");
            CardFilterTypes drawCardType = (CardFilterTypes)M_SideEffectParam.GetParam_ConstInt("DrawCardType");

            int dropCardCount = player.HandManager.DropCardType(dropCardType, new HashSet <int> {
                executorInfo.CardInstanceId
            });

            player.HandManager.GetTempCardByCardTypes(drawCardType, dropCardCount);
            return(true);
        }
Example #3
0
    internal int DropCardType(CardFilterTypes cardFilterType, HashSet <int> exceptCardInstanceId)
    {
        List <int> dropCardInstanceIds = new List <int>();

        switch (cardFilterType)
        {
        case CardFilterTypes.All:
        {
            foreach (CardBase cb in Cards)
            {
                if (!exceptCardInstanceId.Contains(cb.M_CardInstanceId))
                {
                    dropCardInstanceIds.Add(cb.M_CardInstanceId);
                }
            }

            break;
        }

        case CardFilterTypes.SoldierMech:
        {
            foreach (CardBase cb in Cards)
            {
                if (!exceptCardInstanceId.Contains(cb.M_CardInstanceId))
                {
                    if (cb.CardInfo.BaseInfo.CardType == CardTypes.Mech && cb.CardInfo.MechInfo.IsSoldier)
                    {
                        dropCardInstanceIds.Add(cb.M_CardInstanceId);
                    }
                }
            }

            break;
        }

        case CardFilterTypes.HeroMech:
        {
            foreach (CardBase cb in Cards)
            {
                if (!exceptCardInstanceId.Contains(cb.M_CardInstanceId))
                {
                    if (cb.CardInfo.BaseInfo.CardType == CardTypes.Mech && !cb.CardInfo.MechInfo.IsSoldier)
                    {
                        dropCardInstanceIds.Add(cb.M_CardInstanceId);
                    }
                }
            }

            break;
        }

        case CardFilterTypes.Equip:
        {
            foreach (CardBase cb in Cards)
            {
                if (!exceptCardInstanceId.Contains(cb.M_CardInstanceId))
                {
                    if (cb.CardInfo.BaseInfo.CardType == CardTypes.Equip)
                    {
                        dropCardInstanceIds.Add(cb.M_CardInstanceId);
                    }
                }
            }

            break;
        }

        case CardFilterTypes.Spell:
        {
            foreach (CardBase cb in Cards)
            {
                if (!exceptCardInstanceId.Contains(cb.M_CardInstanceId))
                {
                    if (cb.CardInfo.BaseInfo.CardType == CardTypes.Spell)
                    {
                        dropCardInstanceIds.Add(cb.M_CardInstanceId);
                    }
                }
            }

            break;
        }

        case CardFilterTypes.Energy:
        {
            foreach (CardBase cb in Cards)
            {
                if (!exceptCardInstanceId.Contains(cb.M_CardInstanceId))
                {
                    if (cb.CardInfo.BaseInfo.CardType == CardTypes.Energy)
                    {
                        dropCardInstanceIds.Add(cb.M_CardInstanceId);
                    }
                }
            }

            break;
        }
        }

        int count = 0;

        foreach (int dropCardInstanceId in dropCardInstanceIds)
        {
            bool suc = DropCard(dropCardInstanceId);
            if (suc)
            {
                count++;
            }
        }

        return(count);
    }
Example #4
0
    public static List <int> GetRandomCardInfoByCardFilterType(CardFilterTypes cardFilterType, int count)
    {
        switch (cardFilterType)
        {
        case CardFilterTypes.All:
        {
            List <int> cardIds = new List <int>();
            foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
            {
                if (kv.Value.CardID == (int)EmptyCardTypes.EmptyCard)
                {
                    continue;
                }
                if (kv.Value.CardID == (int)EmptyCardTypes.NoCard)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.IsHide || kv.Value.BaseInfo.IsTemp)
                {
                    continue;
                }
                cardIds.Add(kv.Key);
            }

            List <int> res = Utils.GetRandomFromList(cardIds, count);
            return(res);
        }

        case CardFilterTypes.SoldierMech:
        {
            List <int> cardIds = new List <int>();
            foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
            {
                if (kv.Value.CardID == (int)EmptyCardTypes.EmptyCard)
                {
                    continue;
                }
                if (kv.Value.CardID == (int)EmptyCardTypes.NoCard)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.IsHide || kv.Value.BaseInfo.IsTemp)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.CardType == CardTypes.Mech && kv.Value.MechInfo.IsSoldier)
                {
                    cardIds.Add(kv.Key);
                }
            }

            List <int> res = Utils.GetRandomFromList(cardIds, count);
            return(res);
        }

        case CardFilterTypes.HeroMech:
        {
            List <int> cardIds = new List <int>();
            foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
            {
                if (kv.Value.CardID == (int)EmptyCardTypes.EmptyCard)
                {
                    continue;
                }
                if (kv.Value.CardID == (int)EmptyCardTypes.NoCard)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.IsHide || kv.Value.BaseInfo.IsTemp)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.CardType == CardTypes.Mech && !kv.Value.MechInfo.IsSoldier)
                {
                    cardIds.Add(kv.Key);
                }
            }

            List <int> res = Utils.GetRandomFromList(cardIds, count);
            return(res);
        }

        case CardFilterTypes.Equip:
        {
            List <int> cardIds = new List <int>();
            foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
            {
                if (kv.Value.CardID == (int)EmptyCardTypes.EmptyCard)
                {
                    continue;
                }
                if (kv.Value.CardID == (int)EmptyCardTypes.NoCard)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.IsHide || kv.Value.BaseInfo.IsTemp)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.CardType == CardTypes.Equip)
                {
                    cardIds.Add(kv.Key);
                }
            }

            List <int> res = Utils.GetRandomFromList(cardIds, count);
            return(res);
        }

        case CardFilterTypes.Spell:
        {
            List <int> cardIds = new List <int>();
            foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
            {
                if (kv.Value.CardID == (int)EmptyCardTypes.EmptyCard)
                {
                    continue;
                }
                if (kv.Value.CardID == (int)EmptyCardTypes.NoCard)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.IsHide || kv.Value.BaseInfo.IsTemp)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.CardType == CardTypes.Spell)
                {
                    cardIds.Add(kv.Key);
                }
            }

            List <int> res = Utils.GetRandomFromList(cardIds, count);
            return(res);
        }

        case CardFilterTypes.Energy:
        {
            List <int> cardIds = new List <int>();
            foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
            {
                if (kv.Value.CardID == (int)EmptyCardTypes.EmptyCard)
                {
                    continue;
                }
                if (kv.Value.CardID == (int)EmptyCardTypes.NoCard)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.IsHide || kv.Value.BaseInfo.IsTemp)
                {
                    continue;
                }
                if (kv.Value.BaseInfo.CardType == CardTypes.Energy)
                {
                    cardIds.Add(kv.Key);
                }
            }

            List <int> res = Utils.GetRandomFromList(cardIds, count);
            return(res);
        }
        }

        return(null);
    }