Aura.Channel.World.Inventory.InventoryPocketNormal.FillStacks C# (CSharp) 메소드

FillStacks() 공개 메소드

public FillStacks ( Item item, List &changed ) : bool
item Item
changed List
리턴 bool
		public override bool FillStacks(Item item, out List<Item> changed)
		{
			changed = new List<Item>();

			if (item.Data.StackType != StackType.Stackable)
				return false;

			for (var y = 0; y < _height; ++y)
			{
				for (var x = 0; x < _width; ++x)
				{
					var invItem = _map[x, y];
					if (invItem == null || changed.Contains(invItem))
						continue;

					// If same class or item is stack item of inventory item
					if (item.Info.Id == invItem.Info.Id || invItem.Data.StackItemId == item.Info.Id)
					{
						// If item fits into stack 100%
						if ((uint)invItem.Info.Amount + (uint)item.Info.Amount <= (uint)invItem.Data.StackMax)
						{
							invItem.Info.Amount += item.Info.Amount;
							item.Info.Amount = 0;

							changed.Add(invItem);

							return true;
						}

						// If stack is not full
						if (invItem.Info.Amount < invItem.Data.StackMax)
						{
							var diff = Math.Min(item.Info.Amount, (ushort)(invItem.Data.StackMax - invItem.Info.Amount));
							item.Info.Amount -= diff;
							invItem.Info.Amount += diff;

							changed.Add(invItem);
						}
					}
				}
			}

			return false;
		}