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; }
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; }
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; }