public void LeaveItem(vItem item, int amount) { onLeaveItem.Invoke(item, amount); item.amount -= amount; if (item.amount <= 0 && items.Contains(item)) { if (item.type != vItemType.Consumable) { var equipPoint = equipPoints.Find(ep => ep.equipmentReference.item == item || ep.area != null && ep.area.ValidSlots.Find(slot => slot.item == item)); if (equipPoint != null) { if (equipPoint.area) { equipPoint.area.RemoveItem(item); } } } items.Remove(item); Destroy(item); } }
void CheckTwoHandItem(EquipPoint equipPoint, vItem item) { if (item == null) { return; } var opposite = equipPoints.Find(ePoint => ePoint.area != null && ePoint.equipPointName.Equals("LeftArm") && ePoint.area.currentEquipedItem != null); if (equipPoint.equipPointName.Equals("LeftArm")) { opposite = equipPoints.Find(ePoint => ePoint.area != null && ePoint.equipPointName.Equals("RightArm") && ePoint.area.currentEquipedItem != null); } else if (!equipPoint.equipPointName.Equals("RightArm")) { return; } if (opposite != null && (item.twoHandWeapon || opposite.area.currentEquipedItem.twoHandWeapon)) { opposite.area.RemoveCurrentItem(); } }
public void AddItemToEquipSlot(int indexOfSlot, vItem item) { if (indexOfSlot < equipSlots.Count && item != null) { var slot = equipSlots[indexOfSlot]; if (slot != null && slot.isValid && slot.itemType.Contains(item.type)) { if (slot.item != null && slot.item != item) { if (currentEquipedItem == slot.item) { lastEquipedItem = slot.item; } slot.item.isInEquipArea = false; onUnequipItem.Invoke(this, item); } slot.AddItem(item); onEquipItem.Invoke(this, item); } } }
public void UnequipItem(vEquipArea equipArea, vItem item) { onUnequipItem.Invoke(equipArea, item); //if (item != equipArea.lastEquipedItem) return; var equipPoint = equipPoints.Find(ep => ep.equipPointName == equipArea.equipPointName && ep.equipmentReference.item != null && ep.equipmentReference.item == item); if (equipPoint != null && item != null) { equipTimer = item.equipDelayTime; var type = item.type; if (type != vItemType.Consumable) { if (!inventory.isOpen && !inEquip) { animator.SetInteger("EquipItemID", equipArea.equipPointName.Contains("Right") ? item.EquipID : -item.EquipID); animator.SetTrigger("EquipItem"); } StartCoroutine(UnequipItemRoutine(equipPoint, item)); } } }
public void UseItem(vItem item) { if (item) { onUseItem.Invoke(item); if (item.attributes != null && item.attributes.Count > 0 && applyAttributeEvents.Count > 0) { foreach (ApplyAttributeEvent attributeEvent in applyAttributeEvents) { var attributes = item.attributes.FindAll(a => a.name.Equals(attributeEvent.attribute)); foreach (vItemAttribute attribute in attributes) { attributeEvent.onApplyAttribute.Invoke(attribute.value); } } } if (item.amount <= 0 && items.Contains(item)) { items.Remove(item); } } }
/// <summary> /// Equip item to specific area and specific slot /// </summary> /// <param name="indexOfArea">Index of Equip Area</param> /// <param name="indexOfSlot">Index of Slot in Equip Area</param> /// <param name="item">Item to Equip</param> /// <param name="immediate">Force immediate</param> public void EquipItemToEquipArea(int indexOfArea, int indexOfSlot, vItem item, bool immediate = false) { if (!inventory) { return; } if (immediate) { inventory.isOpen = immediate; } if (inventory.equipAreas != null && indexOfArea < inventory.equipAreas.Length) { var area = inventory.equipAreas[indexOfArea]; if (area != null) { area.AddItemToEquipSlot(indexOfSlot, item); } } if (immediate) { inventory.isOpen = false; } }
public void EquipWeapon(vEquipArea equipArea, vItem item) { var slotsInArea = equipArea.ValidSlots; if (slotsInArea != null && slotsInArea.Count > 0 && holderAreas.ContainsKey(equipArea.equipPointName)) { //Check All Holders to Show for (int i = 0; i < slotsInArea.Count; i++) { if (slotsInArea[i].item != null) { var holder = holderAreas[equipArea.equipPointName].Find(h => slotsInArea[i].item && slotsInArea[i].item.id == h.itemID && ((equipArea.currentEquipedItem && equipArea.currentEquipedItem != item && equipArea.currentEquipedItem != slotsInArea[i].item && equipArea.currentEquipedItem.id != item.id) || !equipArea.currentEquipedItem)); if (holder) { holder.SetActiveHolder(true); holder.SetActiveWeapon(true); } } } //Check Current Item to Equip with time if (equipArea.currentEquipedItem != null) { var holder = holderAreas[equipArea.equipPointName].Find(h => h.itemID == equipArea.currentEquipedItem.id); if (holder) { holder.equipDelayTime = equipArea.currentEquipedItem.equipDelayTime; // Unhide Holder and hide Equiped weapon StartCoroutine(EquipRoutine(holder, true, false, (itemManager.inventory != null && itemManager.inventory.isOpen))); } } } }
public bool ContainsItem(vItem item) { return(ValidSlots.Find(slot => slot.item == item) != null); }
public void UnequipItem(vEquipArea equipArea, vItem item) { onUnequipItem.Invoke(equipArea, item); ChangeEquipmentDisplay(equipArea, item); }
internal void OnDropItem(vItem item, int amount) { onDropItem.Invoke(item, amount); CheckEquipmentChanges(); }
internal void OnUseItem(vItem item) { onUseItem.Invoke(item); CheckEquipmentChanges(); }
IEnumerator EquipItemRoutine(EquipPoint equipPoint, vItem item) { if (!inEquip) { inventory.canEquip = false; inEquip = true; if (equipPoint != null) { if (item.originalObject) { if (equipPoint.equipmentReference != null && equipPoint.equipmentReference.equipedObject != null) { var _equipment = equipPoint.equipmentReference.equipedObject.GetComponent <vIEquipment>(); if (_equipment != null) { _equipment.OnUnequip(equipPoint.equipmentReference.item); } Destroy(equipPoint.equipmentReference.equipedObject); } if (!inventory.isOpen) { while (equipTimer > 0) { if (item == null) { break; } yield return(null); equipTimer -= Time.deltaTime; } } var point = equipPoint.handler.customHandlers.Find(p => p.name == item.customEquipPoint); var equipTransform = point != null ? point : equipPoint.handler.defaultHandler; var equipedObject = Instantiate(item.originalObject, equipTransform.position, equipTransform.rotation) as GameObject; equipedObject.transform.parent = equipTransform; if (equipPoint.equipPointName.Contains("Left")) { var scale = equipedObject.transform.localScale; scale.x *= -1; equipedObject.transform.localScale = scale; } equipPoint.equipmentReference.item = item; equipPoint.equipmentReference.equipedObject = equipedObject; var equipment = equipedObject.GetComponent <vIEquipment>(); if (equipment != null) { equipment.OnEquip(item); } equipPoint.onInstantiateEquiment.Invoke(equipedObject); } else if (equipPoint.equipmentReference != null && equipPoint.equipmentReference.equipedObject != null) { var _equipment = equipPoint.equipmentReference.equipedObject.GetComponent <vIEquipment>(); if (_equipment != null) { _equipment.OnUnequip(equipPoint.equipmentReference.item); } Destroy(equipPoint.equipmentReference.equipedObject); equipPoint.equipmentReference.item = null; } } inEquip = false; inventory.canEquip = true; if (equipPoint != null) { CheckTwoHandItem(equipPoint, item); } } }
public void OnUseItem(vItem item) { }