Esempio n. 1
0
    protected virtual void PickUp(GameObject actor)
    {
        this.gameObject.transform.parent        = actor.transform;
        this.gameObject.transform.localPosition = pickedUpTransform.offset;
        this.gameObject.transform.localScale    = pickedUpTransform.scale;
        BringInfront(actor);

        slotTaken             = actor.AddComponent <CarriedItem>();
        slotTaken.carriedItem = this;

        pickedUp = true;
    }
Esempio n. 2
0
    protected virtual void Drop()
    {
        if (acting) //avoid infinite recursion
        {
            return;
        }

        acting = true;

        ActionHistory.Action dropAction = delegate(GameObject actor)
        {
            CarriedItem  slot = actor.GetComponent <CarriedItem>();
            PickableItem item = slot.carriedItem;

            item.RestoreTransform(new Vector3(0, 0, 0));
            item.slotTaken = null;
            item.pickedUp  = false;

            //Free the slot next turn so that the item is not picked up immediately
            new WaitNextTurn().Then(() => slot.Free()).Start(this);

            /* Put on top for one turn
             * SpriteRenderer renderer = item.GetComponent<SpriteRenderer>();
             * renderer.sortingLayerName = "Actor";
             * renderer.sortingOrder = 2;
             *
             * new WaitNextTurn().Then(() => {
             *  if (renderer.sortingOrder == 2) { //CAS
             *      renderer.sortingLayerName = "Item";
             *      renderer.sortingOrder = 0;
             *  }
             * }).Start(this);
             * //*/

            return(false);
        };

        slotTaken.gameObject.GetComponent <Movement>().actionHistory.Add(dropAction);
        dropAction(slotTaken.gameObject);

        acting = false;
    }
Esempio n. 3
0
    protected virtual void Activate()
    {
        if (acting) //avoid infinite recursion
        {
            return;
        }

        acting = true;

        ActionHistory.Action activation = null;
        activation = delegate(GameObject actor)
        {
            CarriedItem  slot = actor.GetComponent <CarriedItem>();
            PickableItem item = slot.carriedItem;

            item.Activate();
            return(false);
        };

        activation(slotTaken.gameObject);
        slotTaken.gameObject.GetComponent <Movement>().actionHistory.Add(activation);

        acting = false;
    }