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); }
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)); } }
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)); }
public void Equip(ExpendableItem newItem, EquipSlotNameType equipSlotName) { EquipFrom(newItem, equipSlotName, -1); }
public ExpendableItem GetEquippedAt(EquipSlotNameType equipSlotName) { return(_equippedItems[(int)equipSlotName]); }
public EquipSlotType GetSlotType(EquipSlotNameType equipSlotName) { return(_equipSlotTypes[(int)equipSlotName]); }
public void Unequip(EquipSlotNameType equipSlotName, bool addToInventory = true) { UnequipTo(equipSlotName, -1, addToInventory); }
public EquipmentChangedEventArgs(EquippableItem oldItem, EquippableItem newItem, EquipSlotNameType equipSlotName) { OldItem = oldItem; NewItem = newItem; EquipSlotName = equipSlotName; }