/// <summary> /// Initialise the display /// </summary> /// <param name="elements">Elements to display</param> /// <param name="customerName">The name of the customer</param> public void Initialise(BurgerConstruction elements, string customerName) { // display name TxtCustomer.text = customerName; int index = 0; foreach (var element in elements.GetItems()) { var state = true; var sprite = GetSprite_(element, index, ref state); // set appearance of the image ImageBGs[index].gameObject.SetActive(state); Images[index].sprite = sprite; index++; } // hide unused images for (; index < ImageBGs.Length; index++) { ImageBGs[index].gameObject.SetActive(false); } }
/// <summary> /// Generates a burger with random components /// </summary> /// <returns>The constructed burger</returns> public static BurgerConstruction GetOrder() { BurgerConstruction burger = new BurgerConstruction(); // bun var bun = GetValue_ <BunType>(); burger.AddItem(new BurgerBun(bun)); // top of bun // veg - can be 0, 1, or 2 items var numVeg = SpawnItemDistributionFetcher <int> .GetRandomEnumValue(GetDistributionVeg_()); for (int i = 0; i < numVeg; i++) { burger.AddItem(new BurgerVeg(GetValue_ <BurgerVegType>())); } // burger - can be 1 or 2 pattys var numPattys = SpawnItemDistributionFetcher <int> .GetRandomEnumValue(GetDistributionBurgers_()); var burgerType = GetValue_ <BurgerType>(); for (int i = 0; i < numPattys; i++) { burger.AddItem(new BurgerPatty(burgerType)); } // sauce - can be 0 or 1 sauces var numSauce = SpawnItemDistributionFetcher <int> .GetRandomEnumValue(GetDistributionSauce_()); for (int i = 0; i < numSauce; i++) { burger.AddItem(new BurgerSauce(GetValue_ <SauceType>(), 0)); } burger.AddItem(new BurgerBun(bun)); // bottom of bun return(burger); }
/// <summary> /// A burger has been sent to the customer /// </summary> /// <param name="items">The burger items that were received</param> public void BurgerReceived(List <object> items) { _given = new BurgerConstruction(items); }
/// <summary> /// Assesses if a burger is cooked correctly /// </summary> /// <param name="created">The burger that was created</param> /// <param name="complaints">Reference to the list of complaints/differences between the created and requested burgers</param> private static void AssessBurgerCooked_(BurgerConstruction created, ref List <BurgerComplaint> complaints) { // loop through all items in the created burger foreach (var item in created.GetItems()) { // find all pattys if (item is BurgerPatty) { var patty = item as BurgerPatty; // if colder than allowed, add a complaint if (patty.Heat() < MIN_HEAT_THRESHOLD) { // lose points based on how cold it is var percentage = (MIN_HEAT_THRESHOLD - patty.Heat()) / MIN_HEAT_THRESHOLD; complaints.Add(new BurgerComplaint((int)(DEDUCTION_COLD * percentage), REASON_COLD, LicenseToGrillController.Instance.Burgers[(int)patty.GetBurgerType()], patty.Colour())); } // find the range of perfectly cooked var min = BurgerPatty.MinCookedLevel(patty.GetBurgerType()); var max = BurgerPatty.MaxCookedLevel(patty.GetBurgerType()); int uncooked = 0; int overcooked = 0; int burnt = 0; // check each side of the patty and look for sides that are under/over cooked, or completely burnt foreach (var side in patty.CookedLevel()) { if (side < min && side > burnt) { uncooked++; } else if (side < burnt) { burnt++; } else if (side > max) { uncooked++; } // otherwise, good. } // if any sides uncooked, add complaint if (uncooked > 0) { var msg = uncooked == 2 ? "Both sides" : "One side"; var sprite = LicenseToGrillController.Instance.Burgers[(int)patty.GetBurgerType()]; complaints.Add(new BurgerComplaint(DEDUCTION_UNCOOKED * uncooked, REASON_UNCOOKED_PREFIX + msg, sprite, patty.Colour())); } // if any sides burnt, add complaint if (burnt > 0) { var msg = burnt == 2 ? "Both sides" : "One side"; var sprite = LicenseToGrillController.Instance.Burgers[(int)patty.GetBurgerType()]; complaints.Add(new BurgerComplaint(DEDUCTION_BURNED * burnt, REASON_BURNED_PREFIX + msg, sprite, patty.Colour())); } // if any sides overcooked, add complaint if (overcooked > 0) { var msg = overcooked == 2 ? "Both sides" : "One side"; var sprite = LicenseToGrillController.Instance.Burgers[(int)patty.GetBurgerType()]; complaints.Add(new BurgerComplaint(DEDUCTION_OVERCOOKED * overcooked, REASON_OVERCOOKED_PREFIX + msg, sprite, patty.Colour())); } } } }
/// <summary> /// Constructor /// </summary> public CustomerOrder(string name, BurgerConstruction request) { _customerName = name; _request = OrderFactory.GetOrder(); }