using System.Collections.Generic; using System.Linq; using Wizard.Battle; public class SkillTargetEqualOrLessCostFromLastTarget : ISkillCustomSelectFilter { private string _strLastTargetIndex = "0"; public List KeyCards { get; private set; } public SkillTargetEqualOrLessCostFromLastTarget(string customValue) { _strLastTargetIndex = customValue; } public IEnumerable Filtering(IEnumerable cards, IEnumerable battlePlayerInfos, SkillConditionCheckerOption option) { KeyCards = new List(); BattleManagerBase ins = BattleManagerBase.GetIns(); List list = new List(); List selectKeyCards = new SkillTargetLastTargetFilter(_strLastTargetIndex).Filtering(battlePlayerInfos, option).ToList(); List list2 = cards.OrderBy((IReadOnlyBattleCardInfo x) => x.Index).ToList(); int i; for (i = 0; i < selectKeyCards.Count; i++) { IEnumerable source = list2.Where((IReadOnlyBattleCardInfo c) => c.Cost <= selectKeyCards[i].Cost); if (source.Count() > 0) { KeyCards.Add(selectKeyCards[i]); int index = (BattleManagerBase.IsRandomDraw ? ins.StableRandom(source.Count()) : 0); IReadOnlyBattleCardInfo item = source.ElementAtOrDefault(index); list.Add(item); list2.Remove(item); } } return list; } }