public void DoLeave(bool satisfied)
    {
        canAcceptFood = false;
        renderedCustomer.SetActive(false);
        var controller = FindObjectOfType <MainSceneController>();

        //is order fulfilled correctly?
        if (satisfied)
        {
            //get player who made customer happy
            switch (submittingPlayer.playerNumber)
            {
            //add score based on complexity of order
            case 1:
                controller.player1Score += GameConstants.ScorePerIngredient * order.GetIngredientCount();
                break;

            case 2:
                controller.player2Score += GameConstants.ScorePerIngredient * order.GetIngredientCount();
                break;
            }
            //conditions are correct for spawning powerup, so do so
            //50% of time is TimeUp, 25% of time is PointsUp, 25% of time is SpeedUp
            if (attachedBar.percentComplete <= 0.3F)
            {
                if (RandomUtil.GenerateFloat() > 0.5F)
                {
                    //Do spawn time up
                    DoSpawnPowerUp(PowerUpType.TimeUp);
                }
                else
                {
                    if (RandomUtil.GenerateFloat() > 0.5F)
                    {
                        //Do spawn score up
                        DoSpawnPowerUp(PowerUpType.PointsUp);
                    }
                    else
                    {
                        //Do spawn speed up
                        DoSpawnPowerUp(PowerUpType.SpeedUp);
                    }
                }
            }
        }
        else
        {
            //customer is angry. Find out which player(s) customer is angry at and deduct score accordingly
            if (player1Mad && player2Mad)
            {
                controller.player1Score -= GameConstants.ScorePerIngredient * order.GetIngredientCount() * 2;
                controller.player2Score -= GameConstants.ScorePerIngredient * order.GetIngredientCount() * 2;
            }
            else if (player1Mad)
            {
                controller.player1Score -= GameConstants.ScorePerIngredient * order.GetIngredientCount() * 2;
            }
            else if (player2Mad)
            {
                controller.player2Score -= GameConstants.ScorePerIngredient * order.GetIngredientCount() * 2;
            }
            //customer's order was not fulfilled, deduct points from both players accordingly
            else
            {
                controller.player1Score -= GameConstants.ScorePerIngredient * order.GetIngredientCount();
                controller.player2Score -= GameConstants.ScorePerIngredient * order.GetIngredientCount();
            }
        }
        order      = null;
        isActive   = false;
        player1Mad = false;
        player2Mad = false;
        attachedBar.ResetProgressBar();
    }
    public void StartCustomer()
    {
        canAcceptFood = true;
        renderedCustomer.SetActive(true);
        order = new Salad();
        var ingredients = RandomUtil.CreateRandomCombination();

        foreach (var ingredient in ingredients)
        {
            order.AddIngredient(ingredient);
        }
        if (attachedBar != null)
        {
            attachedBar.StartProgressBar(GameConstants.WaitTime * GameConstants.RecipeComplexityScale * order.GetIngredientCount());
        }
    }