using System.Collections.Generic; public abstract class Inventory { protected Creature m_Owner; protected List m_Items; public virtual void Init(Creature owner) { m_Items = new List(); m_Owner = owner; } public abstract bool CanHandleIncomingItem(Item item); public Creature GetOwner() { return m_Owner; } public virtual bool HandleIncomingItem(Item item) { if (!CanHandleIncomingItem(item)) return false; m_Items.Add(item); item.AquiredByInventory(this); return true; } public List GetItemWithFlag(int flag) { List result = new List(); foreach (var item in m_Items) { var usableItem = item as UsableItem; if (usableItem != null && usableItem.itemConfig.itemFlags.Contains(flag)) { result.Add(usableItem); } } return result; } }