示例#1
0
        async Task <Slot> IHandle <AskCollectionResult, Slot> .Handle(AskCollectionResult message)
        {
            var after = await GetInventoryWindow().DistributeStack(AttachedObject, message.Slot);

            if (after.ItemCount != message.Slot.ItemCount)
            {
                await AttachedObject.GetComponent <ChunkEventBroadcastComponent>().GetGenerator()
                .CollectItem(await message.Source.GetEntityId(), AttachedObject.EntityId, (uint)message.Slot.ItemCount - after.ItemCount);
            }

            return(after);
        }
        async Task <Slot> IHandle <AskCollectionResult, Slot> .Handle(AskCollectionResult message)
        {
            var slot = message.Slot;

            if (slot.CanStack(PickupMetadata.Item))
            {
                var maxStack = ItemHandler.Create((uint)slot.BlockId).MaxStackCount;
                var toStack  = Math.Min(maxStack, slot.ItemCount + PickupMetadata.Item.ItemCount) - PickupMetadata.Item.ItemCount;
                if (toStack > 0)
                {
                    await UpdateItem(PickupMetadata.Item.AddItemCount(toStack));

                    slot.ItemCount -= (byte)toStack;
                    slot.MakeEmptyIfZero();
                }
            }

            return(slot);
        }