Пример #1
0
    public void NewOrder()
    {
        // IF no available foods
        if (m_InactiveFoods.Count == 0)
        {
            Debug.LogWarning("No available food");
            return;
        }

        // Get Random Food
        Food food = RandomFood();

        // Add to Active Food Count
        int index = m_FoodsIndexByName[food.m_sFoodName];

        m_nActiveFoodCount[index]++;

        // Create New Order
        Order newOrder;

        // IF there are inactive orders
        if (m_InActiveOrders.Count > 0)
        {
            // make the inactive order into the new order
            newOrder = m_InActiveOrders[0];

            // remove it from the inactive list
            m_InActiveOrders.RemoveAt(0);
        }
        // ELSE no inactive orders
        else
        {
            // Create a new order
            newOrder = new Order();
        }


        // Get Random DropOff Point
        int  nTimeOut        = 0;
        bool bFindingDropOff = true;

        while (bFindingDropOff)
        {
            int  nRandomIndex  = Random.Range(0, m_DropOffZones.Count);
            var  randomDropOff = m_DropOffZones[nRandomIndex];
            bool available     = true;
            if (m_ActiveOrders.Contains(randomDropOff.m_ActiveOrder))
            {
                available = false;
            }
            if (available)
            {
                newOrder.m_DropOffZone = randomDropOff;
                bFindingDropOff        = false;
            }
            else
            {
                nTimeOut++;
                if (nTimeOut > 5)
                {
                    m_nActiveFoodCount[index]--;
                    m_InActiveOrders.Add(newOrder);
                    return;
                }
            }
        }

        // Set Order variables
        newOrder.m_OrderManager    = this;
        newOrder.m_Food            = Instantiate(food);
        newOrder.m_fStartTime      = Time.time;
        newOrder.m_fOrderExiryTime = m_fOrderExpiryTime;

        // Add Order to active order list
        m_ActiveOrders.Add(newOrder);

        // Activate Pickup zone
        ActivatePickup(newOrder.m_Food);

        // Activate Dropoff zone
        newOrder.m_DropOffZone.Activate(newOrder);

        // UI STUFF

        m_TicketManager.ActivateTicket(newOrder);
    }