private void SelectRecipe(RecipeButtonScript recipeButtonScript) { recipeButtonScript.OnPressed(); FillRecipeInfo(recipeButtonScript); chosenRecipe = recipeButtonScript; recipeInfoGameObject.SetActive(true); }
private void FillRecipeInfo(RecipeButtonScript recipeButtonScript) { chosenRecipeNameTextComponent.text = recipeButtonScript.CraftingRecipe.RecipeName; chosenRecipeDescriptionTextComponent.text = recipeButtonScript.CraftingRecipe.RecipeDescription; chosenRecipeIconImageComponent.sprite = recipeButtonScript.RecipeIcon; ingredientsTextComponent.text = GenerateIngredientsList(recipeButtonScript.CraftingRecipe); toolsTextComponent.text = GenerateToolsList(recipeButtonScript.CraftingRecipe); reagentsTextComponent.text = GenerateReagentsList(recipeButtonScript.CraftingRecipe); craftButtonTextComponent.text = GenerateButtonText(recipeButtonScript.CraftingRecipe); }
private void DeselectRecipe(RecipeButtonScript recipeButtonScript) { if (recipeButtonScript == null) { return; } recipeButtonScript.OnUnpressed(); chosenRecipe = null; recipeInfoGameObject.SetActive(false); }
/// <summary> /// Generates a new recipe button in craftingRecipe.Category. /// </summary> /// <param name="craftingRecipe">The associated crafting recipe.</param> public void OnPlayerLearnedRecipe(CraftingRecipe craftingRecipe) { GameObject newRecipeButton = RecipeButtonScript.GenerateNew( recipeButtonTemplatePrefab, recipesGridLayout.transform, craftingRecipe ); if (chosenCategory.CategoryAndIcon.RecipeCategory != craftingRecipe.Category) { newRecipeButton.SetActive(false); } GetRecipesInCategory(craftingRecipe.Category) .RecipeButtonScripts .Add(newRecipeButton.GetComponent <RecipeButtonScript>()); }
/// <summary> /// Generates new recipe button with unique crafting recipe and its icon. /// </summary> /// <param name="recipeButtonTemplate">The template to create button from.</param> /// <param name="parentTransform">The place(as a transform) where the button will be stored.</param> /// <param name="craftingRecipe">The crafting recipe associated with the button.</param> /// <returns>A new recipe button.</returns> public static GameObject GenerateNew( GameObject recipeButtonTemplate, Transform parentTransform, CraftingRecipe craftingRecipe ) { // instantiate a blank crafting button GameObject generatedButton = Instantiate(recipeButtonTemplate, parentTransform); RecipeButtonScript recipeButtonScript = generatedButton.GetComponent <RecipeButtonScript>(); // we can't move this to the Awake() event because the button can be inactive, so Awake() will not be called recipeButtonScript.backgroundImageComponent = recipeButtonScript.backgroundGameObject.GetComponent <Image>(); recipeButtonScript.borderImageComponent = recipeButtonScript.borderGameObject.GetComponent <Image>(); recipeButtonScript.iconImageComponent = recipeButtonScript.iconGameObject.GetComponent <Image>(); recipeButtonScript.recipeNameTextComponent = recipeButtonScript.textGameObject.GetComponent <Text>(); recipeButtonScript.craftingRecipe = craftingRecipe; // should we use different, overrided icon? if (craftingRecipe.RecipeIconOverride != null) { recipeButtonScript.recipeIcon = craftingRecipe.RecipeIconOverride; } else { // ok, let's just try to use an icon of a result game object SpriteRenderer spriteRenderer; foreach (GameObject resultPart in craftingRecipe.Result) { spriteRenderer = resultPart.GetComponentInChildren <SpriteRenderer>(); if (spriteRenderer == null || spriteRenderer.sprite == null) { continue; } recipeButtonScript.recipeIcon = spriteRenderer.sprite; break; } } recipeButtonScript.iconImageComponent.sprite = recipeButtonScript.recipeIcon; recipeButtonScript.backgroundImageComponent.color = recipeButtonScript.deselectedColor; recipeButtonScript.borderImageComponent.color = recipeButtonScript.uncraftableColor; recipeButtonScript.recipeNameTextComponent.text = craftingRecipe.RecipeName; return(generatedButton); }
/// <summary> /// Deselects a chosen recipe. /// Selects the new recipe. /// </summary> /// <param name="recipeButtonScript">The recipe to select.</param> public void ChangeRecipe(RecipeButtonScript recipeButtonScript) { DeselectRecipe(chosenRecipe); SelectRecipe(recipeButtonScript); }