public bool SpaceInInventory(int itemID, int count) { ItemData data = ItemData.GetItemData(itemID); if (data != null) { int canAdd = 0; for (int i = 0; i < _inventory.Count; i++) { if (_inventory[i].Item1 == itemID) { canAdd += data.GetMaxStack() - _inventory[i].Item2; } } int freeSlots = InventorySize - _inventory.Count; for (int i = 0; i < freeSlots; i++) { canAdd += data.GetMaxStack(); } if (canAdd >= count) { return(true); } } return(false); }
public void EquipAmmo(int itemIndex) { if (itemIndex >= 0 && itemIndex < _inventory.Count) { Tuple <int, int> itemInfo = _inventory[itemIndex]; ItemData data = ItemData.GetItemData(itemInfo.Item1); if (data.GetItemType() == ItemData.ItemType.Ammo) { if (_equipedAmmo.Item1 == -1) { _equipedAmmo = itemInfo; _inventory.RemoveAt(itemIndex); } else if (_equipedAmmo.Item1 == itemInfo.Item1) { int max = data.GetMaxStack() - _equipedAmmo.Item2; int amount = itemInfo.Item2 > max ? max : itemInfo.Item2; _equipedAmmo = new Tuple <int, int>(_equipedAmmo.Item1, _equipedAmmo.Item2 + amount); int remainder = itemInfo.Item2 - amount; if (remainder == 0) { _inventory.RemoveAt(itemIndex); } else { _inventory[itemIndex] = new Tuple <int, int>(itemInfo.Item1, itemInfo.Item2 - amount); } } else { _inventory.RemoveAt(itemIndex); _inventory.Add(_equipedAmmo); _equipedAmmo = itemInfo; } } } }
public int AddItem(int itemID, int count) { if (count < 1 || itemID < 0) { return(0); } ItemData data = ItemData.GetItemData(itemID); if (data == null) { return(0); } if (data.GetItemType() == ItemData.ItemType.Quest) { return(0); } int max = data.GetMaxStack(); int added = 0; int amountToAdd = count; for (int i = 0; i < _items.Count; i++) { if (_items[i].Item1 == itemID) { if (_items[i].Item2 < max) { int amountCanAdd = max - _items[i].Item2; if (amountToAdd <= amountCanAdd) { _items[i] = new Tuple <int, int>(itemID, _items[i].Item2 + amountToAdd); added += amountToAdd; amountToAdd = 0; } else { _items[i] = new Tuple <int, int>(itemID, _items[i].Item2 + amountCanAdd); added += amountCanAdd; amountToAdd -= amountCanAdd; } } } if (amountToAdd < 1) { break; } } while (amountToAdd > 0) { if (_items.Count < MaxItems) { if (amountToAdd <= max) { _items.Add(new Tuple <int, int>(itemID, amountToAdd)); added += amountToAdd; break; } else { _items.Add(new Tuple <int, int>(itemID, max)); added += max; amountToAdd -= max; } } else { break; } } return(added); }