using System.Collections.Generic; using System.Linq; using Wizard.Battle; public class SkillTargetOverCostFromLastTargetFilter : ISkillCustomSelectFilter { public List KeyDestroyedCard { get; private set; } public IEnumerable Filtering(IEnumerable cards, IEnumerable battlePlayerInfos, SkillConditionCheckerOption option) { KeyDestroyedCard = new List(); BattleManagerBase ins = BattleManagerBase.GetIns(); List list = new List(); List selectKeyCards = battlePlayerInfos.SelectMany((IBattlePlayerReadOnlyInfo s) => s.SkillInfoLastTargets.First()).ToList(); List list2 = cards.OrderBy((IReadOnlyBattleCardInfo x) => x.Index).ToList(); int i = 0; int count = selectKeyCards.Count; while (i < count) { IEnumerable source = list2.Where((IReadOnlyBattleCardInfo c) => c.Cost > selectKeyCards[i].Cost); if (source.Count() > 0) { KeyDestroyedCard.Add(selectKeyCards[i]); int index = (BattleManagerBase.IsRandomDraw ? ins.StableRandom(source.Count()) : 0); IReadOnlyBattleCardInfo item = source.ElementAtOrDefault(index); list.Add(item); list2.Remove(item); } int num = i + 1; i = num; } return list; } }