public void Unequip(Equippable pItem)
 {
     //Make sure inventory isn't full first, then try to remove the item
     if (!_inventory.IsFull() && _equipmentPanel.RemoveItem(pItem))
     {
         pItem.Unequip(this);
         _statsPanel.UpdateStatValues();
         //If removing the item went fine, add it to the inventory
         _inventory.AddItem(pItem);
     }
 }
Exemple #2
0
 /// <summary>
 /// Handles equipping
 /// </summary>
 /// <param name="equippable">Equippable.</param>
 public void Equip(Equippable equippable)
 {
     //depending on animation strctur, window.setWeapon("none") before setting next weapon
     //window.setweapon("new equippable") ... let the animator handle the rest
     if (currentEquipment != null)
     {
         currentEquipment.Unequip();
     }
     currentEquipment = equippable;
     currentEquipment.OnEquipped();
     if (equippable.DurationType == Duration.Type.Seconds)
     {
         //start coroutine that counts that
     }
 }
    private void Drop(ItemSlot pDropItemSlot)
    {
        if (_draggedSlot == null || pDropItemSlot == null)
        {
            return;
        }

        if (pDropItemSlot.CanReceiveItem(_draggedSlot.Item) && _draggedSlot.CanReceiveItem(pDropItemSlot.Item))
        {
            Equippable    dragItem = _draggedSlot.Item as Equippable;
            Equippable    dropItem = pDropItemSlot.Item as Equippable;
            EquipmentSlot esDrag   = _draggedSlot as EquipmentSlot;
            EquipmentSlot esDrop   = pDropItemSlot as EquipmentSlot;

            if (_draggedSlot is EquipmentSlot)
            {
                if (dragItem != null)
                {
                    dragItem.Unequip(this);

                    if (esDrag.EquipmentType == EquipmentType.Gloves)
                    {
                        _equipmentPanel.EquipmentSlots[3].Item   = null;
                        _equipmentPanel.EquipmentSlots[3].Amount = 0;
                    }
                    else if (esDrag.EquipmentType == EquipmentType.Gloves1)
                    {
                        _equipmentPanel.EquipmentSlots[2].Item   = null;
                        _equipmentPanel.EquipmentSlots[2].Amount = 0;
                    }
                }
                if (dropItem != null)
                {
                    dropItem.Equip(this);

                    if (dropItem.ItemType == EquipmentType.Gloves)
                    {
                        if (esDrag.EquipmentType == EquipmentType.Gloves)
                        {
                            _equipmentPanel.EquipmentSlots[3].Item   = dropItem;
                            _equipmentPanel.EquipmentSlots[3].Amount = 1;
                        }
                        else if (esDrag.EquipmentType == EquipmentType.Gloves1)
                        {
                            _equipmentPanel.EquipmentSlots[2].Item   = dropItem;
                            _equipmentPanel.EquipmentSlots[2].Amount = 1;
                        }
                    }
                }
            }

            if (pDropItemSlot is EquipmentSlot)
            {
                if (!(_draggedSlot is ShopItemSlot))
                {
                    if (dropItem != null)
                    {
                        dropItem.Unequip(this);

                        if (esDrop.EquipmentType == EquipmentType.Gloves)
                        {
                            _equipmentPanel.EquipmentSlots[3].Item   = null;
                            _equipmentPanel.EquipmentSlots[3].Amount = 0;
                        }
                        else if (esDrop.EquipmentType == EquipmentType.Gloves1)
                        {
                            _equipmentPanel.EquipmentSlots[2].Item   = null;
                            _equipmentPanel.EquipmentSlots[2].Amount = 0;
                        }
                    }
                    if (dragItem != null)
                    {
                        dragItem.Equip(this);

                        if (dragItem.ItemType == EquipmentType.Gloves)
                        {
                            if (esDrop.EquipmentType == EquipmentType.Gloves)
                            {
                                _equipmentPanel.EquipmentSlots[3].Item   = dragItem;
                                _equipmentPanel.EquipmentSlots[3].Amount = 1;
                            }
                            else if (esDrop.EquipmentType == EquipmentType.Gloves1)
                            {
                                _equipmentPanel.EquipmentSlots[2].Item   = dragItem;
                                _equipmentPanel.EquipmentSlots[2].Amount = 1;
                            }
                        }
                    }
                }
                else
                {
                    GameController.errorMessage.AddMessage("Can't do that!");
                }
            }

            _statsPanel.UpdateStatValues();

            if (_draggedSlot is ShopItemSlot)
            {
                if (!(pDropItemSlot is ShopItemSlot))
                {
                    if (!(pDropItemSlot is EquipmentSlot))
                    {
                        if (!_shopInventory.IsFull())
                        {
                            if (DragToBuy(_draggedSlot))
                            {
                                if (DragToSell(pDropItemSlot.Item, pDropItemSlot))
                                {
                                    SwapItemes(pDropItemSlot);
                                }
                            }
                        }
                        else
                        {
                            if (pDropItemSlot.Item == null && DragToBuy(_draggedSlot))
                            {
                                SwapItemes(pDropItemSlot);
                            }
                        }
                    }
                }
                else
                {
                    SwapItemes(pDropItemSlot);
                }
            }
            else if (pDropItemSlot is ShopItemSlot)
            {
                if (DragToSell(_draggedSlot.Item, _draggedSlot))
                {
                    if (DragToBuy(pDropItemSlot))
                    {
                        SwapItemes(pDropItemSlot);
                    }
                    else if (pDropItemSlot.Item == null)
                    {
                        SwapItemes(pDropItemSlot);
                    }
                }
            }
            else
            {
                SwapItemes(pDropItemSlot);
            }
        }
        else
        {
            if (pDropItemSlot is EquipmentSlot)
            {
                GameController.errorMessage.AddMessage("Item cannot be equipped in this slot!");
            }
            else if (pDropItemSlot is ShopItemSlot)
            {
                GameController.errorMessage.AddMessage("Shop is full");
            }
            else
            {
                GameController.errorMessage.AddMessage("Inventory is full");
            }
        }
    }