using System.Collections.Generic; using System.Linq; using Wizard.Battle; public class SkillInOrderFromOldestFilter : ISkillCustomSelectFilter { private int _count; public List OldTargets { get; private set; } public IEnumerable Filtering(IEnumerable cards, IEnumerable battlePlayerInfos, SkillConditionCheckerOption option) { List list = new List(); OldTargets = cards.ToList(); if (option.NextTargetCards != null && option.NextTargetCards.Count > 0) { list.AddRange(option.NextTargetCards); } else { List firstInOrderFromOldest = GetFirstInOrderFromOldest(OldTargets, battlePlayerInfos.Single((IBattlePlayerReadOnlyInfo p) => p.IsPlayer == OldTargets[0].IsPlayer)); if (firstInOrderFromOldest != null) { list.AddRange(firstInOrderFromOldest); } } return list; } private List GetFirstInOrderFromOldest(IEnumerable list, IBattlePlayerReadOnlyInfo player) { List list2 = null; List list3 = list.Where((IReadOnlyBattleCardInfo s) => player.SkillInfoClassAndInPlayCards.Any((IReadOnlyBattleCardInfo p) => p == s)).ToList(); if (list3.Count > 0) { list2 = new List(); IReadOnlyBattleCardInfo readOnlyBattleCardInfo = list3.SingleOrDefault((IReadOnlyBattleCardInfo s) => player.SkillInfoClass == s); list3.Remove(readOnlyBattleCardInfo); if (list3.Count > 0) { list2.Add(list3.First()); } else if (readOnlyBattleCardInfo != null) { list2.Add(readOnlyBattleCardInfo); } } return list2; } }