Beispiel #1
0
        public bool Merge(IItemStack itemStack)
        {
            if (itemStack == null)
            {
                return(false);
            }
            if (_items.Count > 0 &&
                _itemName != itemStack.GetItemName())
            {
                return(false);
            }
            var count     = itemStack.GetCount();
            var wasMerged = false;

            for (var i = 0; i < count; i++)
            {
                var removed = itemStack.RemoveOne();
                if (Add(removed))
                {
                    wasMerged = true;
                }
                else
                {
                    //add it back to the other stack
                    itemStack.Add(removed);
                    break;
                }
            }

            return(wasMerged);
        }
Beispiel #2
0
        /// <summary>
        /// Merges the another itemstack into this stack
        /// </summary>
        /// <returns>The amount of items that were shifted from other to this</returns>
        public static uint Merge(this IItemStack stack, IItemStack other)
        {
            uint itemsAdded = 0;

            if (stack.UnambiguousIdentifier.Equals(other.UnambiguousIdentifier))
            {
                itemsAdded = stack.Add(other.Size);
                other.Remove(itemsAdded);
            }

            return(itemsAdded);
        }