private static string GetAugmentSelectorText(MagicItem magicItem, int i, IReadOnlyList <MagicItemEffect> augmentableEffects, ItemRarity rarity) { var pip = EpicLoot.GetMagicEffectPip(magicItem.IsEffectAugmented(i)); bool free = EnchantCostsHelper.EffectIsDeprecated(augmentableEffects[i].EffectType); return($"{pip} {Localization.instance.Localize(MagicItem.GetEffectText(augmentableEffects[i], rarity, true))}{(free ? " [FREE]" : "")}"); }
private void GenerateAugmentSelectors(AugmentRecipe recipe, InventoryGui inventoryGui) { const float spacing = 34; var checkboxPrefab = Menu.instance.m_settingsPrefab.GetComponent <Settings>().m_invertMouse; var magicItem = recipe.FromItem.GetMagicItem(); var rarity = recipe.FromItem.GetRarity(); var startOffset = new Vector2(-330, -165); var augmentableEffects = magicItem.Effects; var effectCount = augmentableEffects.Count; for (var i = 0; i < Mathf.Max(effectCount, EffectSelectors.Count); ++i) { if (i < effectCount && i >= EffectSelectors.Count) { // create new selector var selector = Object.Instantiate(checkboxPrefab, inventoryGui.m_variantButton.transform.parent, false); selector.gameObject.name = $"EffectSelector{i}"; var rt = selector.gameObject.RectTransform(); rt.anchoredPosition = startOffset + new Vector2(0, i * -spacing); var t = selector.GetComponentInChildren <Text>(); t.font = inventoryGui.m_recipeDecription.font; t.text = MagicItem.GetEffectText(augmentableEffects[i], rarity, true); t.color = magicItem.HasBeenAugmented() && recipe.EffectIndex != i ? Color.gray : EpicLoot.GetRarityColorARGB(rarity); t.resizeTextMaxSize = 18; t.resizeTextMinSize = 10; t.rectTransform.anchoredPosition += new Vector2(300, 0); t.alignment = TextAnchor.MiddleLeft; t.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 300); t.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, spacing); var index = i; selector.onValueChanged.AddListener((selected) => OnSelectorValueChanged(index, selected)); selector.isOn = recipe.EffectIndex == i; selector.gameObject.SetActive(true); selector.interactable = !magicItem.HasBeenAugmented() || recipe.EffectIndex == i; EffectSelectors.Add(selector); } else if (i >= effectCount && i < EffectSelectors.Count) { EffectSelectors[i].gameObject.SetActive(false); } else { var selector = EffectSelectors[i]; selector.gameObject.SetActive(true); selector.isOn = recipe.EffectIndex == i; selector.interactable = !magicItem.HasBeenAugmented() || recipe.EffectIndex == i; var t = selector.GetComponentInChildren <Text>(); t.text = MagicItem.GetEffectText(augmentableEffects[i], rarity, true); t.color = magicItem.HasBeenAugmented() && recipe.EffectIndex != i ? Color.gray : EpicLoot.GetRarityColorARGB(rarity); } } }
public void Show(AugmentTabController.AugmentRecipe recipe, Action <AugmentTabController.AugmentRecipe, MagicItemEffect> onCompleteCallback) { gameObject.SetActive(true); _audioSource.loop = true; _audioSource.clip = EpicLoot.Assets.ItemLoopSFX; _audioSource.volume = 0.5f; _audioSource.Play(); var item = recipe.FromItem.Extended(); var rarity = item.GetRarity(); var magicItem = item.GetMagicItem(); var rarityColor = item.GetRarityColor(); MagicBG.enabled = item.IsMagic(); MagicBG.color = rarityColor; NameText.text = Localization.instance.Localize(item.GetDecoratedName()); Description.text = Localization.instance.Localize(item.GetTooltip()); Icon.sprite = item.GetIcon(); foreach (var button in EffectChoiceButtons) { button.gameObject.SetActive(false); } var newEffectOptions = LootRoller.RollAugmentEffects(item, magicItem, recipe.EffectIndex); for (var index = 0; index < newEffectOptions.Count; index++) { var effect = newEffectOptions[index]; var button = EffectChoiceButtons[index]; button.gameObject.SetActive(true); var text = button.GetComponentInChildren <Text>(); text.text = (index == 0 ? "<color=white>(keep)</color> " : "") + MagicItem.GetEffectText(effect, rarity, true); text.color = rarityColor; var buttonColor = button.GetComponent <ButtonTextColor>(); buttonColor.m_defaultColor = rarityColor; button.onClick.RemoveAllListeners(); button.onClick.AddListener(() => { onCompleteCallback(recipe, effect); OnClose(); }); } }