Esempio n. 1
0
    public override bool PlaceFromEquipment()
    {
        EquipSlotNameType selectedEquipSlotName = (EquipSlotNameType)ItemSelector.Instance.SelectedEquipSlotIndex;

        if (_equipment.GetSlotType(selectedEquipSlotName) == _equipment.GetSlotType(EquipSlotName))
        {
            var thisItem = GetItem();
            if (selectedEquipSlotName != EquipSlotName)
            {
                var selectedEquippable = _equipment.GetEquippedAt(selectedEquipSlotName);
                _equipment.Unequip(selectedEquipSlotName, false);

                if (thisItem != null)
                {
                    _equipment.Unequip(EquipSlotName, false);
                    _equipment.Equip((ExpendableItem)thisItem, selectedEquipSlotName);
                }

                _equipment.Equip(selectedEquippable, EquipSlotName);
            }

            return(true);
        }

        return(false);
    }
Esempio n. 2
0
    public void UnequipTo(EquipSlotNameType equipSlotName, int invSlotIndex, bool addToInventory = true)
    {
        int equipSlotIndex = (int)equipSlotName;

        ExpendableItem oldItem;

        if ((oldItem = _equippedItems[equipSlotIndex]) != null)
        {
            if (addToInventory)
            {
                if (invSlotIndex == -1)
                {
                    invSlotIndex = _inventory.FirstFreeSlot();
                }
                if (!_inventory.AddAt(oldItem, invSlotIndex))
                {
                    return;
                }
            }

            _equippedItems[equipSlotIndex] = null;
            EventManager.Instance.RemoveListener(EventName.WalkDistanceThresholdReached, oldItem.ReduceDurability);
            Debug.Log($"Unequipped {oldItem.Item.ItemName}.");

            EventManager.Instance.InvokeEvent(EventName.EquipmentChanged,
                                              new EquipmentChangedEventArgs(oldItem.Item, null, equipSlotName));
        }
    }
Esempio n. 3
0
    public void EquipFrom(ExpendableItem newItem, EquipSlotNameType equipSlotName, int invSlotIndex)
    {
        if (newItem == null)
        {
            return;
        }
        int            slotIndex = (int)equipSlotName;
        ExpendableItem oldItem;

        if ((oldItem = _equippedItems[slotIndex]) != null)
        {
            UnequipTo(equipSlotName, invSlotIndex);
        }

        _equippedItems[slotIndex] = newItem;
        EventManager.Instance.AddListener(EventName.WalkDistanceThresholdReached, newItem.ReduceDurability);
        Debug.Log($"Equipped {newItem.Item.ItemName}.");

        Analytics.CustomEvent("itemEquipped", new Dictionary <string, object>()
        {
            { "itemName", newItem.Item.ItemName },
            { "itemSlot", equipSlotName.ToString() }
        });

        EventManager.Instance.InvokeEvent(EventName.EquipmentChanged,
                                          new EquipmentChangedEventArgs(oldItem?.Item, newItem.Item, equipSlotName));
    }
Esempio n. 4
0
 public void Equip(ExpendableItem newItem, EquipSlotNameType equipSlotName)
 {
     EquipFrom(newItem, equipSlotName, -1);
 }
Esempio n. 5
0
 public ExpendableItem GetEquippedAt(EquipSlotNameType equipSlotName)
 {
     return(_equippedItems[(int)equipSlotName]);
 }
Esempio n. 6
0
 public EquipSlotType GetSlotType(EquipSlotNameType equipSlotName)
 {
     return(_equipSlotTypes[(int)equipSlotName]);
 }
Esempio n. 7
0
 public void Unequip(EquipSlotNameType equipSlotName, bool addToInventory = true)
 {
     UnequipTo(equipSlotName, -1, addToInventory);
 }
Esempio n. 8
0
 public EquipmentChangedEventArgs(EquippableItem oldItem, EquippableItem newItem, EquipSlotNameType equipSlotName)
 {
     OldItem       = oldItem;
     NewItem       = newItem;
     EquipSlotName = equipSlotName;
 }