Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
    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();
                }
            }
        }
    }