/// <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);
        }
    }
Beispiel #2
0
    /// <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);
 }
Beispiel #4
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()));
                }
            }
        }
    }
 /// <summary>
 /// Constructor
 /// </summary>
 public CustomerOrder(string name, BurgerConstruction request)
 {
     _customerName = name;
     _request      = OrderFactory.GetOrder();
 }