internal void GetTempCardByCardTypes(CardFilterTypes cardFilterTypes, int count) { List <int> cardIds = AllCards.GetRandomCardInfoByCardFilterType(cardFilterTypes, count); foreach (int cardId in cardIds) { GetTempCardsByID(cardId, 1); } }
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); }
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); }
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); }