コード例 #1
0
ファイル: NonFungibleOrder.cs プロジェクト: dahlia/lib9c
        public override OrderReceipt Transfer3(AvatarState seller, AvatarState buyer, long blockIndex)
        {
            if (seller.inventory.TryGetLockedItem(new OrderLock(OrderId), out var inventoryItem))
            {
                if (inventoryItem.item is INonFungibleItem nonFungibleItem)
                {
                    nonFungibleItem.RequiredBlockIndex = blockIndex;
                    seller.inventory.RemoveItem(inventoryItem);

                    if (nonFungibleItem is Costume costume)
                    {
                        buyer.UpdateFromAddCostume(costume, false);
                    }
                    else
                    {
                        buyer.UpdateFromAddItem2((ItemUsable)nonFungibleItem, false);
                    }
                }

                return(new OrderReceipt(OrderId, buyer.agentAddress, buyer.address, blockIndex));
            }

            throw new ItemDoesNotExistException(
                      $"Aborted because the tradable item({TradableId}) was failed to load from avatar's inventory.");
        }