コード例 #1
0
        private void CheckIfSomethingToDo(DateTime clockTime)
        {
            for (int j = 0; j < _beingPrepared.Count; j++)
            {
                if (clockTime >= _beingPrepared[j].TimeReady)
                {
                    _beingPrepared[j].OrderType = OrderType.Ready;
                    OrderReady?.Invoke(this, _beingPrepared[j]);
                    _beingPrepared.RemoveAt(j);
                    j -= 1;
                }
            }
            for (int i = 0; i < _orders.Count; i++)
            {
                if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.Order)
                {
                    OrderReady?.Invoke(this, _orders[i]);

                    if (!GuestBills.ContainsKey(_orders[i].Name))
                    {
                        GuestBills.Add(_orders[i].Name, _orders[i].Article.Price);
                    }
                    else
                    {
                        GuestBills[_orders[i].Name] += _orders[i].Article.Price;
                    }

                    _beingPrepared.Add(_orders[i]);
                    _orders.RemoveAt(i);
                    i -= 1;
                }
                else if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.ToPay)
                {
                    OrderReady?.Invoke(this, _orders[i]);
                    _orders.RemoveAt(i);
                }
            }
        }
コード例 #2
0
        public PizzaMaker()
        {
            ordersToMake     = new Queue <Order>();
            TimeToMakeAPizza = TimeSpan.FromMinutes(3.0);
            fakeTime         = FakeTime.Instance;
            Task.Run(async() =>
            {
                for (;;)
                {
                    if (ordersToMake.Count > 0)
                    {
                        //i have to make that order
                        var order = ordersToMake.Dequeue();
                        await fakeTime.Wait((int)TimeToMakeAPizza.TotalMinutes);
                        if (OrderReady != null)
                        {
                            OrderReady.Invoke(this, order);
                        }
                    }

                    await Task.Delay(50);
                }
            });
        }
コード例 #3
0
ファイル: Cooker.cs プロジェクト: pierrethenot/MasterChefInfo
 protected virtual void OnOrderReady(EventArgs e)
 {
     OrderReady?.Invoke(this, e);
 }