private void OnTriggerExit2D(Collider2D collision) { if (collision.gameObject.CompareTag("Table")) { Table table = collision.GetComponent <Table>(); tablesInRange.Remove(table); } else if (collision.gameObject.CompareTag("DishPickup")) { DishPickup pickup = collision.GetComponent <DishPickup>(); dishPickupsInRange.Remove(pickup); } else if (collision.gameObject.CompareTag("Waiter")) { Waiter waiter = collision.GetComponentInParent <Waiter>(); waitersInRange.Remove(waiter); } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Table")) { Table table = collision.GetComponent <Table>(); tablesInRange.Add(table); } else if (collision.CompareTag("DishPickup")) { DishPickup pickup = collision.GetComponent <DishPickup>(); dishPickupsInRange.Add(pickup); } else if (collision.CompareTag("Waiter")) { Waiter waiter = collision.GetComponentInParent <Waiter>(); if (waiter == this) { return; } waitersInRange.Add(waiter); // audioSC.PlayOneShot(collideSFX); } }
public void ProcessDishInput() { if (IsCarryingDish()) { Table closestTable = null; foreach (var table in tablesInRange) { if (table.isWaitingForDish) { closestTable = table; } } if (closestTable != null) { Debug.Assert(closestTable.isWaitingForDish); if (closestTable.Serve(dish)) { int got_tip = closestTable.CollectTip(); m_collectedTip += got_tip; GainPoints new_particle = Instantiate(waiter_gain_points_particle, closestTable.transform.position, new Quaternion()); Vector2 particles_destination = new Vector2(5, 1); if (waiter_face != null) { particles_destination = waiter_face.transform.position; } else { Debug.Log("Please set waiters its faces from GUI"); } new_particle.destination = particles_destination; new_particle.color = waiter_color; new_particle.number_of_points = got_tip; } else { int penalty = Random.Range(incorrectDishPenalty, incorrectDishPenalty + incorrectDishPenaltyDeviation); m_collectedTip -= penalty; if (m_collectedTip < 0) { m_collectedTip = 0; } } RemoveDish(); } else { ReclaimDish(); } } else { Vector3 pos = GetComponent <Transform>().position; DishPickup closestDishPickup = null; float closestDishPickupDistance = float.MaxValue; foreach (var dishPickup in dishPickupsInRange) { float distance = (dishPickup.GetComponent <Transform>().position - pos).sqrMagnitude; if (dishPickup.hasDish && distance < closestDishPickupDistance) { closestDishPickup = dishPickup; closestDishPickupDistance = distance; } } if (closestDishPickup != null) { Debug.Assert(closestDishPickup.hasDish); dish = closestDishPickup.PickUp(); dish.Transfer(GetComponent <Transform>().Find("DishPivot")); if (bubble) { bubble.Fadeout(); } } } }