public void Buy(int index, int price) { // TODO: do it with strategy pattern if (hasController && coins >= price) { coins -= price; SetCoins(); if (goods[index].isHandheld) { if (controller.rightHandFull) { controller.Throw(); } QQObject obj = Instantiate(goods[index].prefab).GetComponent <QQObject>(); if (!controller.facingRight) { obj.gameObject.transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } if (!controller.facingRight) { obj.gameObject.transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } controller.PickUp(obj); } else { goods[index].Consume(controller); } Close(); } }
private void SetObj() { _obj = GetComponent <QQObject>(); if (_obj == null) { Debug.LogWarning("there's a burnable component on something that's not an object"); } }
public virtual void PickUp() { if (!rightHandFull) { Collider2D[] nearbyObjs = Physics2D.OverlapCircleAll(transform.position, handsReach); foreach (Collider2D c in nearbyObjs) { if (c.gameObject == gameObject) { continue; } QQObject o = c.GetComponent <QQObject>(); if (o == null || o.hasHolder || o.isStatic) { continue; } o.GetPickedUp(this); break; } } }
public override void PickUp(QQObject obj) { obj.GetPickedUp(this); }
public virtual void Throw() { rightHand.GetThrown(facingRight?Vector2.right:Vector2.left); rightHand = null; rightHandFull = false; }
public virtual void PickUp(QQObject obj) { obj.GetPickedUp(this); }