예제 #1
0
    public virtual void Interact(object interactor, Item.Uses interaction = Item.Uses.A)
    {
        IHasItem acquirer = interactor as IHasItem;

        if (acquirer != null)
        {
            PickUp(acquirer);
        }
    }
예제 #2
0
    public void DeferredPickup(string acquirerPath)
    {
        if (acquirerPath == "")
        {
            GD.Print("acquirerPath is null");
        }
        NodePath path         = new NodePath(acquirerPath);
        Node     acquirerNode = Session.session.GetNode(path);
        IHasItem acquirer     = acquirerNode as IHasItem;

        if (acquirer == null)
        {
            GD.Print("No acquirer found!");
        }

        if (acquirer.ReceiveItem(this))
        {
            this.QueueFree();
        }
    }
예제 #3
0
    public void PickUp(IHasItem acquirer)
    {
        if (!Session.NetActive())
        {
            if (acquirer.ReceiveItem(this))
            {
                this.QueueFree();
            }
            return;
        }
        Node acquirerNode = acquirer as Node;

        if (acquirerNode == null)
        {
            return;
        }
        string acquirerPath = acquirerNode.GetPath().ToString();

        DeferredPickup(acquirerPath);
        Rpc(nameof(DeferredPickup), acquirerPath);
    }