Ejemplo n.º 1
0
        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]" : "")}");
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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();
                });
            }
        }