private void DropNormal(GameObject target) { // no target no rockenroll if (target == null) { return; } Slot targetSlot = target.GetComponentInParent <Slot>(); // same slot no rockenroll if (targetSlot == slot) { return; } ItemHolder targetHolder = target.GetComponentInParent <ItemHolder>(); StackableItem targetItem = targetHolder.GetItem(); // if target item is same type (add) if (targetItem != null && item.item.name == targetItem.item.name) { // Add amount int remaining = targetItem.AddAmount(item.Amount); // Remaining back item.Amount = remaining; targetHolder.SetItem(targetItem); if (remaining > 0) { holder.SetItem(item); } else { // nothing left item = null; holder.SetItem(null); } } else { // swap entire items holder.SetItem(targetItem); targetHolder.SetItem(item); } }
private void DropSplit(GameObject target) { if (target == null) { // invalid middle drop, revert amount back StackableItem holdItem = placeHolder.GetComponent <ItemHolder>().GetItem(); item.Amount += holdItem.Amount; return; } Slot targetSlot = target.GetComponentInParent <Slot>(); if (targetSlot == slot) { // middle drop back to position, revert amount back StackableItem holdItem = placeHolder.GetComponent <ItemHolder>().GetItem(); item.Amount += holdItem.Amount; return; } ItemHolder targetHolder = target.GetComponentInParent <ItemHolder>(); StackableItem targetItem = targetHolder.GetItem(); // if target item is same type (add) if (targetItem != null && item.item.name == targetItem.item.name) { // Add amount int remaining = targetItem.AddAmount(item.Amount); // Remaining add to placeholder (stand still on place) StackableItem holdItem = placeHolder.GetComponent <ItemHolder>().GetItem(); holdItem.Amount += remaining; targetHolder.SetItem(targetItem); if (holdItem.Amount > 0) { holder.SetItem(holdItem); } else { // nothing left item = null; holder.SetItem(null); } } else { if (targetItem == null) { holder.SetItem(placeHolder.GetComponent <ItemHolder>().GetItem()); targetHolder.SetItem(item); } else { // drop is invalid, revert amount back StackableItem holdItem = placeHolder.GetComponent <ItemHolder>().GetItem(); item.Amount += holdItem.Amount; holder.SetItem(item); } } }