Exemple #1
0
        /// <summary>
        /// Pour chaque Tick du timer
        /// </summary>
        protected void OnTick(object sender, EventArgs e)
        {
            //Savoir si actuellement la file d'attente de la caisse est pleine
            bool isWaitingQueueFull = CustomersWaiting.Count == NB_MAX_CUSTOMER;

            //Indiquer au magasin que ce client a terminé
            OnCustomerDoneAtCheckout(new CustomerDoneAtCheckoutEventArgs(CustomersWaiting[0]));
            //Enlever le client de la liste
            CustomersWaiting.RemoveAt(0);
            //Lancer le prochain timer pour le client suivant, sinon le couper
            if (CustomersWaiting.Count > 0)
            {
                SetTimer();
            }
            else
            {
                tmrWait.Enabled = false;
            }
            //Si la file d'attente était pleine, indiquer que ce n'est plus le cas
            if (isWaitingQueueFull)
            {
                //Indiquer que la caisse a une/des place(s) disponible(s)
                OnCheckoutAvailable(EventArgs.Empty);
            }
        }
Exemple #2
0
 /// <summary>
 /// Ajouter un client à la file d'attente de la caisse
 /// </summary>
 /// <param name="customer">Le client</param>
 public void AddCustomer(Customer customer)
 {
     CustomersWaiting.Add(customer);
     //Premier client
     if (CustomersWaiting.Count == 1)
     {
         SetTimer();
     }
     //Caisse pleine
     if (CustomersWaiting.Count >= NB_MAX_CUSTOMER)
     {
         OnCheckoutFull(EventArgs.Empty);
     }
 }
Exemple #3
0
 /// <summary>
 /// Retourne l'emplacement dans la file d'attente en fonction de la position dans la file d'attente
 /// </summary>
 /// <param name="c">CLient qui demande sa position dans la file d'attente</param>
 /// <returns>Emplacement dans la file d'attente</returns>
 public PointF GetNextWaitingLocation(Customer c)
 {
     return(new PointF(
                location.X,
                location.Y - Properties.Settings.Default.SIZE_CHECKOUT_CUSTOMER.Height - (CustomersWaiting.IndexOf(c) * (OFFEST_WAITING + Properties.Settings.Default.SIZE_CHECKOUT_CUSTOMER.Height))
                ));
 }