public int Contains(InventoryItem item) { lock (storedItems) { foreach (KeyValuePair<int, Pair<InventoryItem, int>> i in storedItems) { if (i.Value.first == item) { return i.Key; } } return -1; } }
public bool AddItem(InventoryItem item, int amount) { lock (storedItems) { int slot = Contains(item); if (slot != -1) { storedItems[slot].second += amount; return true; } else if (storedItems.Count != capacity) { int freeSlot = GetFreeSlot(); if (freeSlot != -1) { storedItems.Add(freeSlot, new Pair<InventoryItem, int>(item, amount)); return true; } } return false; } }
public static int GetSellPrice(InventoryItem item) { return (int)item.GetDataAt(4); }
public static int GetBuyPrice(InventoryItem item) { return (int)item.GetDataAt(3); }
public bool RemoveItem(InventoryItem item, int amount) { InventoryItem itemToRemove = null; bool removeAll = false; lock (storedItems) { foreach (Pair<InventoryItem, int> i in storedItems.Values) { if (i.first == item) { if (i.second > amount) { i.second -= amount; return true; } else { itemToRemove = i.first; removeAll = true; } } } if (removeAll) { storedItems.Remove(GetSlot(item)); return true; } return false; } }
public int GetItemCount(InventoryItem item) { lock (storedItems) { foreach (Pair<InventoryItem, int> i in storedItems.Values) { if (i.first == item) { return i.second; } } return 0; } }
public bool Equals(InventoryItem item) { return item.GetData() == GetData() && item.GetName() == GetName(); }
public InventoryItem(InventoryItem item) { this.data = item.data; }