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); } }
/// <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"); } } }