public static void Postfix(InventoryGui __instance, Player player, Recipe recipe, ItemDrop.ItemData item, bool canCraft) { var selectedCraftingItem = __instance.InCraftTab() && recipe.m_item != null; var selectedUpgradeItem = __instance.InUpradeTab() && item != null; if (selectedCraftingItem || selectedUpgradeItem) { var thisItem = selectedCraftingItem ? recipe.m_item.m_itemData : item; if (thisItem.UseMagicBackground()) { var element = __instance.m_recipeList.LastOrDefault(); if (element != null) { var image = element.transform.Find("icon").GetComponent <Image>(); var bgImage = Object.Instantiate(image, image.transform.parent, true); bgImage.name = "MagicItemBG"; bgImage.transform.SetSiblingIndex(image.transform.GetSiblingIndex()); bgImage.sprite = EpicLoot.Assets.GenericItemBgSprite; bgImage.color = thisItem.GetRarityColor(); if (!canCraft) { bgImage.color -= new Color(0, 0, 0, 0.66f); } var nameText = element.transform.Find("name").GetComponent <Text>(); nameText.color = canCraft ? thisItem.GetRarityColor() : new Color(0.66f, 0.66f, 0.66f, 1f); } } } }
public static void Postfix(InventoryGui __instance) { var recipeDesc = __instance.m_recipeDecription; if (EpicLoot.UseScrollingCraftDescription.Value && recipeDesc.GetComponent <ContentSizeFitter>() == null) { var contentSizeFitter = recipeDesc.gameObject.AddComponent <ContentSizeFitter>(); contentSizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize; recipeDesc.resizeTextForBestFit = false; recipeDesc.fontSize = 18; recipeDesc.rectTransform.anchorMin = new Vector2(0, 1); recipeDesc.rectTransform.anchorMax = new Vector2(1, 1); // pin top, stretch horiz recipeDesc.rectTransform.pivot = new Vector2(0, 1); recipeDesc.horizontalOverflow = HorizontalWrapMode.Wrap; recipeDesc.rectTransform.anchoredPosition = new Vector2(4, 4); recipeDesc.raycastTarget = false; var scrollRectGO = new GameObject("ScrollView", typeof(RectTransform), typeof(ScrollRect), typeof(Image)); scrollRectGO.transform.SetParent(__instance.m_recipeDecription.transform.parent, false); scrollRectGO.transform.SetSiblingIndex(0); var rt = scrollRectGO.transform as RectTransform; rt.anchorMin = new Vector2(0, 1); rt.anchorMax = new Vector2(0, 1); rt.pivot = new Vector2(0, 1); rt.anchoredPosition = new Vector2(11, -74); rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 330); rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 300); scrollRectGO.GetComponent <Image>().color = new Color(0, 0, 0, 0.2f); var viewport = new GameObject("Viewport", typeof(RectTransform), typeof(RectMask2D)); viewport.transform.SetParent(scrollRectGO.transform, false); var vrt = viewport.transform as RectTransform; vrt.anchorMin = new Vector2(0, 0); vrt.anchorMax = new Vector2(1, 1); vrt.sizeDelta = new Vector2(0, 0); recipeDesc.transform.SetParent(vrt, false); var scrollRect = scrollRectGO.GetComponent <ScrollRect>(); scrollRect.viewport = vrt; scrollRect.content = recipeDesc.rectTransform; scrollRect.horizontal = false; scrollRect.vertical = true; scrollRect.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHide; scrollRect.scrollSensitivity = 30; scrollRect.inertia = false; scrollRect.movementType = ScrollRect.MovementType.Clamped; scrollRect.onValueChanged.RemoveAllListeners(); var newScrollbar = Object.Instantiate(__instance.m_recipeListScroll, scrollRectGO.transform); newScrollbar.size = 0.4f; scrollRect.onValueChanged.AddListener((_) => newScrollbar.size = 0.4f); scrollRect.verticalScrollbar = newScrollbar; } if (__instance.InCraftTab() && __instance.m_selectedRecipe.Key != null && __instance.m_selectedRecipe.Key.m_item.m_itemData.IsMagicCraftingMaterial()) { var localizedName = Localization.instance.Localize(__instance.m_selectedRecipe.Key.m_item.m_itemData.GetDecoratedName()); if (__instance.m_selectedRecipe.Key.m_amount > 1) { localizedName = localizedName + " x" + __instance.m_selectedRecipe.Key.m_amount; } __instance.m_recipeName.text = localizedName; __instance.m_recipeIcon.sprite = __instance.m_selectedRecipe.Key.m_item.m_itemData.GetIcon(); __instance.m_variantButton.gameObject.SetActive(false); } if (__instance.InCraftTab() || __instance.InUpradeTab()) { Image bgImage = null; var magicItemBG = __instance.m_recipeIcon.transform.parent.Find("MagicItemBG"); if (magicItemBG != null) { bgImage = magicItemBG.GetComponent <Image>(); } else { bgImage = Object.Instantiate(__instance.m_recipeIcon, __instance.m_recipeIcon.transform.parent, true); bgImage.name = "MagicItemBG"; bgImage.transform.SetSiblingIndex(__instance.m_recipeIcon.transform.GetSiblingIndex()); bgImage.sprite = EpicLoot.GetMagicItemBgSprite(); } var item = __instance.InCraftTab() ? __instance.m_selectedRecipe.Key?.m_item?.m_itemData : __instance.m_selectedRecipe.Value; if (item != null && item.UseMagicBackground()) { bgImage.enabled = item.UseMagicBackground(); bgImage.color = item.GetRarityColor(); __instance.m_recipeName.text = Localization.instance.Localize(item.GetDecoratedName()); } else { bgImage.enabled = false; } } if (__instance.InUpradeTab() && __instance.m_selectedRecipe.Value != null) { var newQuality = Mathf.Min(__instance.m_selectedRecipe.Value.m_quality + 1, __instance.m_selectedRecipe.Value.m_shared.m_maxQuality); var tooltip = ItemDrop.ItemData.GetTooltip(__instance.m_selectedRecipe.Value, newQuality, true); __instance.m_recipeDecription.text = Localization.instance.Localize(tooltip); } }