using System; using System.Collections.Generic; using System.Linq; namespace Dominion.NET_WPF.Models { public class AutoYieldCollection : List { public AutoYieldAction GetAction(Type @event, Type source, string sourceValue, Type target) { var matching = this.Where(ay => ay.Event == @event && ay.Source == source && ay.SourceValue == sourceValue); // Blank target overrides specific target return matching.Where(ay => ay.Target == null).FirstOrDefault()?.Action ?? matching.Where(ay => ay.Target == target).FirstOrDefault()?.Action ?? AutoYieldAction.Prompt; } public void ClearByDuration(AutoYieldDuration duration) { switch (duration) { case AutoYieldDuration.Game: Clear(); return; case AutoYieldDuration.Turn: RemoveAll(ay => ay.Duration == AutoYieldDuration.Turn || ay.Duration == AutoYieldDuration.Action); return; case AutoYieldDuration.Action: RemoveAll(ay => ay.Duration == AutoYieldDuration.Action); return; } } } }