/// <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())); } } } }