public void GetEmptyItemAtSlotTest() { CreateItemContainer(); IItemSlot itemSlot = _itemContainer.GetItem(0); Assert.NotNull(itemSlot); Assert.Null(itemSlot.ItemId); Assert.Equal(0, itemSlot.ItemCount); Assert.False(itemSlot.HasItem); }
public static IEntityHandle PlayerDropItem(this IItemContainer container, int itemIndex, [NotNull] IPlayerComponent player) { if (player == null) { throw new ArgumentNullException(nameof(player)); } var item = container.GetItem(itemIndex); if (item == null) { return(null); } var itemFactory = (IGroundItemFactory)player.Parent.Server.Services.GetService(typeof(IGroundItemFactory)); if (itemFactory == null) { return(null); } var itemEntityHandle = itemFactory.CreatePlayerDrop(item, player, $"Dropped item {item.Id.Name}x{item.Amount}"); if (itemEntityHandle.IsDead()) { return(null); } var itemEntity = itemEntityHandle.Get(); var itemTransform = itemEntity.GetTransform(); var playerTransform = player.Parent.GetTransform(); itemTransform.SwitchPoE(playerTransform.PoE); itemTransform.Teleport(playerTransform); container.ExecuteChangeInfo(ItemChangeInfo.Remove(itemIndex)); return(itemEntityHandle); }