public override void Populate(Recipe recipe)
        {
            NumCrafted = 0;

            _maxCrafts    = CraftingHelper.GetMaxNumberOfCrafts(recipe);
            NumberToCraft = 1; // Math.Min(_maxCrafts, 1);

            //if (t)
            //{
            //    t.text = _maxCrafts.ToString();
            //}

            m_output = null;

            if (OutputImage)
            {
                OutputImage.texture = null;
            }

            SetCraftCount();

            PopulateIngredients();

            base.Populate(recipe);
        }
        public override bool CheckState(FrameOperationContext fop, CanExecuteRecipeCondition condition, out object[] results)
        {
            results = null;

            if (condition.RecipeReference != null)
            {
                // First, is recipe active
                var recipe = ActivatedRecipeManager.Instance.GetRecipe(condition.RecipeReference.ObjectId);

                if (recipe != null)
                {
                    return(CraftingHelper.GetMaxNumberOfCrafts(recipe) >=
                           condition.Count.GetValueOrDefault(1));
                }
            }

            return(false);
        }
        public override bool CheckState(FrameOperationContext fop, CanCraftCollectibleCondition condition, out object[] results)
        {
            if (condition.CollectibleCount != null)
            {
                var recipes = ActivatedRecipeManager.Instance.GetRecipesForCollectible(condition.CollectibleCount.CollectibleId);

                if (recipes != null)
                {
                    var canCraft = recipes.Where(
                        r => CraftingHelper.GetMaxNumberOfCrafts(r) >= condition.CollectibleCount.Count)
                                   .ToArray();

                    if (canCraft.Length >= 1)
                    {
                        results = canCraft;
                        return(true);
                    }
                }
            }

            results = null;

            return(false);
        }
        void CheckState()
        {
            ObjectHelper.SetObjectsActive(ShowWhenCantExecute, false);
            ObjectHelper.SetObjectsActive(ShowWhenCanExecute, true);

            if (m_output != null)
            {
                if (OutputText)
                {
                    OutputText.text = m_output.Title;
                }
            }
            else
            {
                if (OutputText)
                {
                    OutputText.text = null;
                }
            }

            var reason = CraftingHelper.GetRecipeReason(Data);

            if (OutputText)
            {
                OutputText.gameObject.SetActive(true);
            }

            if (CantExecuteText)
            {
                CantExecuteText.gameObject.SetActive(true);
            }

            switch (reason)
            {
            case CraftingReason.RequirementsMet:
                if (ExecuteButton)
                {
                    ExecuteButton.interactable = true;
                }
                if (LaunchCrafterButton)
                {
                    LaunchCrafterButton.interactable = true;
                    LaunchCrafterButton.onClick.AddListener(PushCraftScreen);

                    if (OutputText)
                    {
                        OutputText.gameObject.SetActive(false);
                    }
                }

                if (CantExecuteText)
                {
                    CantExecuteText.gameObject.SetActive(false);
                }
                break;

            case CraftingReason.RequirementsUnmet:
                CantExecute("Requirements have not been met.");
                break;

            case CraftingReason.XpUnmet:
                CantExecute(reason.ToString());
                break;

            case CraftingReason.NoRequirements:
            case CraftingReason.NoRecipe:
            default:
                break;
            }
        }