// Here: verify user choices public void SubmitDecisions() { UnityEngine.Debug.Log("Submitted"); // Check employee decisions (Has at least 2 employees working) for (int i = 0; i < 3; i++) { Store.ShiftInfo shift = (Store.ShiftInfo)Shifts[i]; int totalEmployees = shift.TotalEmployees; if (totalEmployees < Store.MinEmployeesWorking) { Page5.SetActive(false); switch (i) { case 0: Page1.SetActive(true); CurrentPage = 1; SetButtons(); break; case 1: Page2.SetActive(true); CurrentPage = 2; SetButtons(); break; case 2: Page3.SetActive(true); CurrentPage = 3; SetButtons(); break; } Error.Show("You must have at least " + Store.MinEmployeesWorking + " employees working each shift"); return; } } SimController.Day.SetShifts(Shifts); // reset shifts arraylist. Precaution, shouldn't be necessary in final treatment Shifts = new ArrayList(); for (int i = 0; i < 3; i++) { Shifts.Add(new Store.ShiftInfo()); } SimController.Day.SetDeliveries(Deliveries, DeliveryCost); Deliveries = new ArrayList(); SimController.Day.RunDay(); }
public void RunDay() { int i, j; Delivery delivery; UnityEngine.Debug.Log("Before RunDay: " + SimController.DayNum); // print shifts UnityEngine.Debug.Log("Shifts:"); for (i = 0; i < 3; i++) { UnityEngine.Debug.Log("Shift" + (i + 1) + " --> " + ((ShiftInfo)Shifts[i]).ToString()); } // print deliveries for (i = 0; i < Deliveries.Count; i++) { Delivery temp = (Delivery)Deliveries[i]; UnityEngine.Debug.Log("Delivery Item: " + temp.foodItem.Name + " Quantity: " + temp.Quantity + " Exp: " + temp.Expedited + " ArrivalDate: " + temp.ArrivalDate); } // print BOH stock for (i = 0; i < Stock.Count; i++) { FoodItem food = (FoodItem)Stock[i]; UnityEngine.Debug.Log("BOH " + food.Name + ": " + food.StockBOH); } // simulate day DailyEmployeePayout = 0.0m; DailyDeliveryCost = 0.0m; DailyRevenue = 0; ShiftRevenue = new decimal[3]; DailyItemsSold = 0; ShiftItemsSold = new int[3]; RegUT = new double[3]; StartOfDayCash = Cash; for (i = 0; i < 3; i++) { ShiftRevenue[i] = 0; ShiftItemsSold[i] = 0; } CheckoutsPerformed = 0; CheckoutsPossible = 0; DeliveriesOrdered = 0; // pay for deliveries ordered today for (i = 0; i < Deliveries.Count; i++) { delivery = (Delivery)Deliveries[i]; // check for expedited is redundant (thus not here) if (delivery.OrderDate == SimController.DayNum) { Cash -= delivery.Cost; DailyDeliveryCost += delivery.Cost; DeliveriesOrdered++; } } // get standard deliveries for (i = 0; i < Deliveries.Count; i++) { delivery = (Delivery)Deliveries[i]; // check for expedited is redundant (thus not here) if (delivery.ArrivalDate == SimController.DayNum && delivery.Expedited) { ProcessDelivery(delivery.foodItem, delivery.Quantity); Deliveries.RemoveAt(i); i--; } } // For each shift for (i = 0; i < 3; i++) { Store.ShiftInfo shift = (Store.ShiftInfo)Shifts[i]; // pay employees DailyEmployeePayout += (decimal)shift.TotalEmployees * HourlyPay; // 1. process expedited deliveries --> Expedited deliveries come during shift 2 if (i == 1) { for (j = 0; j < Deliveries.Count; j++) { delivery = (Delivery)Deliveries[j]; // check for expedited is redundant (thus not here) if (delivery.ArrivalDate == SimController.DayNum) { ProcessDelivery(delivery.foodItem, delivery.Quantity); Deliveries.RemoveAt(j); j--; } } } // 2. restock before "shift" Restock(i); // 3. during shift, people buy goods // modeled closely to Real-Time AR tablet logic // IMPORTANT: if Simulation.TimeBetweenCheckouts == 10, numCheckoutsPerHour MUST equal 6 // for checkouts to be balanced for (j = 0; j < NUM_CHECKOUTS_PER_HOUR; j++) { PullItemsOffShelves(i); checkoutFoods(i); } // items that are not checked out but are brought to registers need to be returned ReturnItemsToShelves(); RegUT[i] = 100.0 * CheckoutsPerformed / CheckoutsPossible; UnityEngine.Debug.Log("Register UT for shift " + (i + 1) + " is " + RegUT[i]); // 4. restock after "shift" Restock(i); } // expire foods ExpireFoods(); // print BOH stock UnityEngine.Debug.Log("After RunDay" + SimController.DayNum); for (i = 0; i < Stock.Count; i++) { FoodItem food = (FoodItem)Stock[i]; UnityEngine.Debug.Log("BOH " + food.Name + ": " + food.StockBOH); } // Deduct today's orders (set by SetDeliveries() ) Cash -= DeliveryCost; Cash -= DailyEmployeePayout; UnityEngine.Debug.Log("Cash: " + Cash); // load PostDayReport SimController.LoadResults(); }