Example #1
0
    /// <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()));
                }
            }
        }
    }