Exemple #1
0
 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;
             }
         }
     }
 }
Exemple #2
0
            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);
            }