private void SpawnRecipes(bool active) { ClearRecipesOnScreen(); List <Recipe> recipes = active ? RecipeManager.Instance.ActiveRecipes.Select(r => r.Recipe).ToList() : RecipeManager.Instance.InactiveRecipes; foreach (Recipe recipe in recipes) { var obj = Instantiate(recipePrefab, container).transform; UI.ChildText(obj, "Name", recipe.recipeName); UI.ChildText(obj, "EstimatedCost", "Estimated cost: <b>" + recipe.Cost + "$</b>"); BulletPoint.BulletPoint list = obj.Find("List").GetComponent <BulletPoint.BulletPoint> (); for (int i = 0; i < recipe.ingredients.Count; i++) { list.AddBulletPoint(recipe.ingredients[i].ingredientName + " <i><color=#FFB8B2>x" + recipe.ingredientAmount[i] + "</color></i>"); } Button button = obj.Find("Button").GetComponent <Button>(); if (active) { TMP_InputField priceField = obj.Find("Price").GetComponent <TMP_InputField>(); priceField.placeholder.GetComponent <TextMeshProUGUI>().text = "Price: " + RecipeManager.Instance.ActiveRecipes.Find(r => r.Recipe == recipe).Price.ToString() + "$"; priceField.onEndEdit.AddListener((string cost) => EditPrice(recipe, cost)); UI.ChildText(button.transform, 0, "Remove"); button.onClick.AddListener(() => { RecipeManager.Instance.DeleteActiveRecipe(recipe); Destroy(obj.gameObject); }); } else { button.onClick .AddListener(() => { float price = 0; try { price = float.Parse(obj.Find("Price").GetComponent <TMPro.TMP_InputField>().text); } catch (System.Exception) { UI.Instance.OpenErrorScreen("The entered price is invalid"); return; } RecipeManager.ActiveRecipe addRecipe = new RecipeManager.ActiveRecipe(recipe, price); RecipeManager.Instance.AddActiveRecipe(addRecipe); Destroy(obj.gameObject); }); } } }
private void EditPrice(Recipe recipe, string newCost) { RecipeManager.ActiveRecipe ar = RecipeManager.Instance.ActiveRecipes.Find(r => r.Recipe == recipe); float price = 0; try { price = float.Parse(newCost); } catch (Exception e) { Debug.LogError(e.Message); UI.Instance.OpenErrorScreen("The new price entered is invalid."); return; } if (price <= 0) { UI.Instance.OpenErrorScreen("The new price entered is invalid."); return; } ar.Price = float.Parse(newCost); UI.Instance.OpenSuccessScreen("Price updated successfuly!"); }