예제 #1
0
    private void ShowTooltip(BaseItemSlot itemSlot)
    {
        EquipableItem equipableItem = itemSlot.Item as EquipableItem;

        if (equipableItem != null)
        {
            itemTooltip.ShowTooltip(equipableItem);
        }
    }
예제 #2
0
 private void SelectItem(int index, BaseItemSlot itemSlot)
 {
     if (itemSlot.Item != null)
     {
         _selectedItemSlot.Item        = itemSlot.Item;
         _selectedItemName.text        = itemSlot.Item.Name;
         _selectedItemDescription.text = itemSlot.Item.Description;
     }
 }
예제 #3
0
    private void Unequip(BaseItemSlot itemslot)
    {
        EquipableItem equipableItem = itemslot.Item as EquipableItem;

        if (equipableItem != null)
        {
            Unequip(equipableItem);
        }
    }
예제 #4
0
    /*    private bool IsInventoryNull()
     *  {
     *      for (int i = 0; i < inventory.ItemSlots.Count; i++)
     *      {
     *          if (inventory.ItemSlots[i].Item != null)
     *          {
     *              return false;
     *          }
     *      }
     *      return true;
     *  }
     *
     *  private bool IsEquippedPanelNull()
     *  {
     *      for (int i = 0; i < equippedItemsPanel.equippedItemSlots.Length; i++)
     *      {
     *          if (equippedItemsPanel.equippedItemSlots[i].Item != null)
     *          {
     *              return false;
     *          }
     *      }
     *      return true;
     *  }*/

    /*    private void InventoryLeftClick(BaseItemSlot itemSlot)
     *  {
     *      if (unit != null)
     *      {
     *          selectedItemSlot = itemSlot;
     *
     *          if (itemSlot.Item != null)
     *          {
     *              if (itemSlot.Item is EquippableItem)
     *              {
     *                  EquippableItem equippableItem = (EquippableItem)itemSlot.Item;
     *                  if (inventory.RemoveItem(itemSlot.Item) && equippedItemsPanel.AddItem(equippableItem))
     *                  {
     *                      unit.unitItems.Add(equippableItem);
     *                  }
     *                  else
     *                  {
     *                      Debug.Log("No more space in unit");
     *                      inventory.AddItem(equippableItem);
     *                  }
     *              }
     *              else
     *              {
     *                  // add consumable to the unit inventory (dont use)
     *              }
     *          }
     *      }
     *      // AfterRightClickEvent();
     *  }*/
    /*    private void EquippedItemsPanelLeftClick(BaseItemSlot itemSlot)
     *  {
     *      if (unit != null)
     *      {
     *          selectedItemSlot = itemSlot;
     *          if (itemSlot.Item != null)
     *          {
     *              EquippableItem equippableItem = (EquippableItem)itemSlot.Item;
     *              if (inventory.CanAddItem(itemSlot.Item) && equippedItemsPanel.RemoveItem(equippableItem))
     *              {
     *                  // equippedItemsPanel.RemoveItem(equippableItem);
     *                  inventory.AddItem(equippableItem);
     *                  equippedItemsPanel.RemoveItem(equippableItem);
     *                  unit.unitItems.Remove(equippableItem);
     *              }
     *              else
     *              {
     *                  equippedItemsPanel.AddItem(equippableItem);
     *              }
     *          }
     *      }
     *  }
     *
     *  // item in inventory can be some other type, not nec equippable so need to check if its equippable only then will equip
     *  private void InventoryRightClick(BaseItemSlot itemSlot)
     *  {
     *      selectedItemSlot = itemSlot;
     *      // Debug.Log(itemSlot.Item);
     *      // AfterInventoryRightClickEvent();
     *      if (itemSlot.Item != null)
     *      {
     *          if (itemSlot.Item is EquippableItem)
     *          {
     *              Equip((EquippableItem)itemSlot.Item);
     *          }
     *          else if (itemSlot.Item is UsableItem)
     *          {
     *              UsableItem usableItem = (UsableItem)itemSlot.Item;
     *              usableItem.Use(this);
     *
     *              if (usableItem.IsConsumable)
     *              {
     *                  itemSlot.Amount--;
     *                  // inventory.RemoveItem(usableItem);
     *                  usableItem.Destroy();
     *              }
     *          }
     *      }
     *      AfterRightClickEvent();
     *  }*/

    /*   private void EquippedItemPanelRightClick(BaseItemSlot itemSlot)
     * {
     *     selectedItemSlot = itemSlot;
     *     if (itemSlot.Item != null)
     *     {
     *         if (itemSlot.Item is EquippableItem)
     *         {
     *             Unequip((EquippableItem)itemSlot.Item);
     *         }
     *     }
     *     AfterRightClickEvent();
     * }*/


    #endregion


    private void PersonalInventoryLeftClick(BaseItemSlot itemSlot)
    {
        selectedItemSlot = itemSlot;
        ItemSlotData previousItemSlotData = unit.unitInventory.Find(x =>
        {
            if (x.Item is EquippableItem)
            {
                return(((EquippableItem)x.Item).equipped);
            }

            return(false);
        });

        if (unit == null || itemSlot.Item == null)
        {
            return;
        }

        if (itemSlot.Item is EquippableItem)
        {
            EquippableItem currItem = (EquippableItem)itemSlot.Item;
            if (previousItemSlotData != null)
            {
                EquippableItem prevItem = (EquippableItem)previousItemSlotData.Item;
                Unequip(prevItem);
                previousItem = prevItem;
                foreach (ItemSlot _itemSlot in unitPersonalInventory.ItemSlots)
                {
                    if (_itemSlot.Item == previousItem)
                    {
                        _itemSlot.itemName.color = Color.white;
                    }
                }
            }
            if (!currItem.equipped && (previousItem == null || previousItem != currItem))
            {
                Equip(currItem);
                itemSlot.itemName.color = itemSlot.equippedColor;
            }
            else
            {
                Unequip(currItem);
                itemSlot.itemName.color = Color.white;
            }
            unit.UpdateUI();
            unit.AssignInventory(unitPersonalInventory.GetOccupiedItemSlots());
        }
        else if (itemSlot.Item is UsableItem)
        {
            currUsableItemSlot = itemSlot;
            usableItemConfirmationPanel.SetActive(true);
            usableItemConfirmationPanel.GetComponent <RectTransform>().position = Input.mousePosition;
        }

        previousItem = null;
    }
예제 #5
0
 private void EventHelper(BaseItemSlot itemSlot, Action <int, BaseItemSlot> action)
 {
     for (int i = 0; i < equipmentSlots.Length; i++)
     {
         if (equipmentSlots[i] == itemSlot)
         {
             action?.Invoke(i, itemSlot);
         }
     }
 }
예제 #6
0
 private void StorageRightClick(BaseItemSlot itemSlot)
 {
     if (dragItemSlot == null)
     {
         if (itemSlot.ITEM != null && itemSlot.ITEM.IsUseable)
         {
             UseItem(false, itemSlot);
         }
     }
 }
예제 #7
0
 private void InvRightClick(BaseItemSlot itemSlot)
 {
     if (dragItemSlot == null)
     {
         if (itemSlot.ITEM != null && itemSlot.ITEM.IsUseable)
         {
             UseItem(true, itemSlot);
         }
     }
 }
예제 #8
0
    private void Unequip(BaseItemSlot itemSlot)
    {
        ItemPickUp copy_item_pickup = itemSlot.ITEM;         // copy item

        if (inv_container.CanStore() && equip_container.RemoveItem(itemSlot.INDEX))
        {
            inv_container.StoreItem(copy_item_pickup);
            copy_item_pickup.Unequip();
        }
    }
예제 #9
0
    private void TransferToInventory(BaseItemSlot itemSlot)
    {
        Item item = itemSlot.Item;

        if (item != null && Inventory.CanAddItem(item))
        {
            openItemContainer.RemoveItem(item);
            Inventory.AddItem(item);
        }
    }
예제 #10
0
    private void Drag(BaseItemSlot itemSlot)
    {
        draggableItem.transform.position = Input.mousePosition;

        if (!setItemDescription && itemSlot.ITEM != null)
        {
            SetItemDescription(itemSlot);
            setItemDescription = true;
        }
    }
예제 #11
0
 private void EquipmentUnequip(BaseItemSlot itemSlot)
 {
     if (dragItemSlot == null)
     {
         if (itemSlot.ITEM is ItemPickUp && itemSlot.ITEM.itemDefinition.IsEquipped)
         {
             Unequip(itemSlot);
         }
     }
 }
예제 #12
0
    private void TransferToItemContainer(BaseItemSlot itemSlot)
    {
        ItemSO item = itemSlot.Item;

        if (item != null && openItemContainer.CanAddItem(item))
        {
            inventory.RemoveItem(item);
            openItemContainer.AddItem(item);
        }
    }
예제 #13
0
 private void RightClickHandler(BaseItemSlot itemSlot)
 {
     if (dragItemSlot == null)
     {
         if (itemSlot.ITEM != null && itemSlot.ITEM.IsUseable)
         {
             UseItem(itemSlot);
         }
     }
 }
예제 #14
0
 private void EventHelper(BaseItemSlot itemSlot, Action <int, BaseItemSlot> action)
 {
     for (int i = 0; i < itemSlots.Count; i++)
     {
         if (itemSlots[i] == itemSlot)
         {
             action?.Invoke(i, itemSlot);
         }
     }
 }
예제 #15
0
 private void BeginDrag(BaseItemSlot itemSlot)
 {
     if (itemSlot.Item != null)
     {
         dragItemSlot                     = itemSlot;
         draggableItem.sprite             = itemSlot.Item.Icon;
         draggableItem.transform.position = Input.mousePosition;
         draggableItem.gameObject.SetActive(true);
     }
 }
예제 #16
0
    private void AddStacks(BaseItemSlot dropItemSlot)
    {
        int numAddablesStacks = dropItemSlot.Item.MaximumStacks - dropItemSlot.Amount;
        int stacksToAdd       = Mathf.Min(numAddablesStacks, dragItemSlot.Amount);

        // Add stacks until drop slot is full
        // Remove the same number of stacks from drag item
        dropItemSlot.Amount += stacksToAdd;
        dragItemSlot.Amount -= stacksToAdd;
    }
 private void BeginDrag(BaseItemSlot itemSlot)
 {
     if (itemSlot.Item != null)
     {
         draggedSlot                      = itemSlot;
         draggableItem.sprite             = itemSlot.Item.Icon;
         draggableItem.transform.position = Input.mousePosition;
         draggableItem.enabled            = true;
     }
 }
예제 #18
0
 public void BeginDrag(BaseItemSlot itemSlot)
 {
     if (itemSlot.Item != null)
     {
         dragItemSlot                     = itemSlot;
         draggableItem.sprite             = dragItemSlot.Item.iconAnim.sprites[0];
         draggableItem.transform.position = Input.mousePosition;
         draggableItem.enabled            = true;
     }
 }
예제 #19
0
    public void EquipItem(EquipmentItemSlot equipmentSlot, BaseItemSlot itemSlot, ItemTemplate equipmentToAccept)
    {
        if (equipmentSlot.slotEquipmentType == equipmentToAccept.GetItemType())
        {
            equipmentSlot.SlotItem = equipmentToAccept;
            equipmentSlot.SlotItemAmount++;

            itemSlot.SlotItem       = null;
            itemSlot.SlotItemAmount = 0;
        }
    }
예제 #20
0
 private void InventoryRightClick(BaseItemSlot itemSlot)
 {
     if (itemSlot.Item is EquippableItem)
     {
         Equip((EquippableItem)itemSlot.Item);
     }
     else if (itemSlot.Item is UsableItem)
     {
         EquipUsableItem((UsableItem)itemSlot.Item);
     }
 }
예제 #21
0
    private void InventoryLeftClick(BaseItemSlot itemSlot)
    {
        if (dragItemSlot == null)

        {
            if (itemSlot.ITEM != null && itemSlot.ITEM.itemDefinition.IsEquipped)
            {
                Equip(itemSlot);
            }
        }
    }
예제 #22
0
 private void BeginDrag(int index, BaseItemSlot itemSlot)
 {
     if (itemSlot.Item != null)
     {
         _draggedItemSlot                     = itemSlot;
         _draggedItemSlotIndex                = index;
         _draggedItemImage.sprite             = itemSlot.Item.Preview;
         _draggedItemImage.transform.position = _input.GetPointerPosition();
         _draggedItemImage.gameObject.SetActive(true);
     }
 }
예제 #23
0
    private void DropItemOutsideUI()
    {
        if (dragItemSlot == null)
        {
            return;
        }

        //questionDialog.Show();
        BaseItemSlot baseItemSlot = dragItemSlot;
        //questionDialog.OnYesEvent += () => DestroyItemInSlot( baseItemSlot );
    }
예제 #24
0
    private void DropItemOutsideUI()
    {
        if (dragItemSlot == null)
        {
            return;
        }


        BaseItemSlot slot = dragItemSlot;

        DestroyItemInSlot(slot);
    }
예제 #25
0
    void SplitStacks(BaseItemSlot dropItemSlot)
    {
        if (dropItemSlot == null)
        {
            return;
        }
        int stackamount    = dragItemSlot.Amount;
        int stacksToRemove = dragItemSlot.Amount / 2;

        dragItemSlot.Amount = stackamount - stacksToRemove;
        dropItemSlot.Amount = stacksToRemove;
    }
예제 #26
0
 public void OnUseItemButton()
 {
     usableItemConfirmationPanel.SetActive(false);
     playerInventoryPanel.SetActive(false);
     ((UsableItem)currUsableItemSlot.Item).Use(unit);
     currUsableItemSlot.Amount--;
     UpdateStatValues();
     unit.UpdateUI();
     unit.AssignInventory(unitPersonalInventory.GetOccupiedItemSlots());
     currUsableItemSlot = null;
     OnUsedUsableItem?.Invoke();
 }
예제 #27
0
    private void DropItemOutsideUI()
    {
        if (dragItemSlot == null)
        {
            return;
        }

        reallyDropItemDialog.Show();
        BaseItemSlot slot = dragItemSlot;

        reallyDropItemDialog.OnYesEvent += () => DestroyItemInSlot(slot);
    }
예제 #28
0
    private void Drop(BaseItemSlot tranferItemSlot)
    {
        if (dragItemSlot == null)
        {
            return;
        }

        if (tranferItemSlot.CanReceiveItem(dragItemSlot.ITEM) && dragItemSlot.CanReceiveItem(tranferItemSlot.ITEM))
        {
            SwapItems(tranferItemSlot);
        }
    }
예제 #29
0
    private void Drop(int index, BaseItemSlot dropItemSlot)
    {
        if (_draggedItemSlot == null)
        {
            return;
        }

        if (dropItemSlot.CanAddStack(_draggedItemSlot.Item) || (dropItemSlot.CanReceiveItem(_draggedItemSlot.Item) && _draggedItemSlot.CanReceiveItem(dropItemSlot.Item)))
        {
            InvokeServerRpc(ChangeItemSlots, _draggedItemSlotIndex, _draggedItemSlot.GetType().ToString(), index, dropItemSlot.GetType().ToString());
        }
    }
예제 #30
0
    public void DropItemOutsideUI()
    {
        if (dragItemSlot == null)
        {
            return;
        }

        player.character.questionDialogue.Show();
        BaseItemSlot baseItemSlot = dragItemSlot;

        player.character.questionDialogue.OnYesEvent += () => DestroyItemInSlot(baseItemSlot);
    }