//destoy item void DestroyItem(SlotManager draggedSlot) { //check item Disenchantable if (!draggedSlot.slotItem.isItemDisenchantable) { return; } //if item dragged from inventory, destroy and create dust item if (draggedSlot.slotType == SlotManager.SlotType.inventory) { ItemdDisenchantedEvent(draggedSlot.slotItem); draggedSlot.CreateItemOnSlot(draggedSlot.slotItem.disenchantItem); return; } //if item dragged from character slots , check empty slot in inventory for dust item if (!IsThereEmptyPlace()) { return; } //if we have , destroy and create dust item ItemdDisenchantedEvent(draggedSlot.slotItem); SlotManager dustSlot = inventorySlots.Find(s => s.isSlotEmpty); dustSlot.CreateItemOnSlot(draggedSlot.slotItem.disenchantItem); draggedSlot.CreateItemOnSlot(null); OnCharacterStatsUpdate(); }
//trade item void TradeItem(SlotManager draggedSlot, SlotManager closestSlot) { Item temporaryDragedItem = draggedSlot.slotItem; Item temporaryClosestItem = closestSlot.isSlotEmpty ? null : closestSlot.slotItem; //check item draggable to closest slot? if (draggedSlot.IsItemTradable(temporaryClosestItem)) { closestSlot.CreateItemOnSlot(temporaryDragedItem); draggedSlot.CreateItemOnSlot(temporaryClosestItem); OnCharacterStatsUpdate(); return; } //if not , create dragged item on a empty inventory slot draggedSlot.CreateItemOnSlot(null); CreateInventoryItem(temporaryDragedItem); OnCharacterStatsUpdate(); }
//upgrade item IEnumerator UpgradeItem(SlotManager draggedSlot, SlotManager upgradeSlot) { if (!upgradeSlot.isSlotEmpty || !draggedSlot.slotItem.isItemUpgradable) { yield break; } Item temporaryDragedItem = draggedSlot.slotItem; //crete item on upgrade slot draggedSlot.CreateItemOnSlot(null); upgradeSlot.CreateItemOnSlot(temporaryDragedItem); //wait for upgrade yield return(new WaitForSeconds(1f)); //get back item to initial position temporaryDragedItem.UpgradeItem(); draggedSlot.CreateItemOnSlot(temporaryDragedItem); upgradeSlot.CreateItemOnSlot(null); OnCharacterStatsUpdate(); }
//create a item on inventory void CreateInventoryItem(Item newItem) { SlotManager emptySlot = inventorySlots.Find(s => s.isSlotEmpty); emptySlot.CreateItemOnSlot(newItem); }