public T Query <T>(Predicate <T> predicate) where T : Sprite, new() { var obj = new T(); if (obj is Aisling) { if (Aislings == null) { return(null); } return(Aislings.Cast <T>().FirstOrDefault(i => predicate(i))); } if (obj is Monster) { if (Monsters == null) { return(null); } return(Monsters.Cast <T>().FirstOrDefault(i => predicate(i))); } if (obj is Mundane) { if (Mundanes == null) { return(null); } return(Mundanes.Cast <T>().FirstOrDefault(i => predicate(i))); } if (obj is Money) { if (Money == null) { return(null); } return(Money.Cast <T>().FirstOrDefault(i => predicate(i))); } if (obj is Item) { if (Items == null) { return(null); } return(Items.Cast <T>().FirstOrDefault(i => predicate(i))); } return(null); }
public T[] QueryAll <T>(Predicate <T> predicate) where T : Sprite, new() { var obj = new T(); if (obj is Aisling) { if (Aislings == null) { return(null); } return(Aislings.Cast <T>().Where(i => predicate(i)).ToArray()); } if (obj is Monster) { if (Monsters == null) { return(null); } return(Monsters.Cast <T>().Where(i => predicate(i)).ToArray()); } if (obj is Mundane) { if (Mundanes == null) { return(null); } return(Mundanes.Cast <T>().Where(i => predicate(i)).ToArray()); } if (obj is Money) { if (Money == null) { return(null); } return(Money.Cast <T>().Where(i => predicate(i)).ToArray()); } if (obj is Item) { if (Items == null) { return(null); } return(Items.Cast <T>().Where(i => predicate(i)).ToArray()); } return(null); }
private void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { var removables = Aislings.Concat(Money).Concat(Mundanes).Concat(Monsters).Concat(Items) .Reverse(); foreach (var obj in removables) { obj.Remove(); } _items?.Clear(); _money?.Clear(); _monsters?.Clear(); _aislings?.Clear(); _mundanes?.Clear(); } disposedValue = true; } }