diff --git a/client/Assets/Vanguard/Runtime/UI/DeckBuilderView.cs b/client/Assets/Vanguard/Runtime/UI/DeckBuilderView.cs index 98390e8..b245838 100644 --- a/client/Assets/Vanguard/Runtime/UI/DeckBuilderView.cs +++ b/client/Assets/Vanguard/Runtime/UI/DeckBuilderView.cs @@ -211,7 +211,6 @@ namespace Vanguard.UI 15); SetFixedSize(_dismantleAllButton, 200f, 38f); SetButtonColor(_dismantleAllButton, new Color(0.30f, 0.16f, 0.08f, 0.95f)); - _dismantleAllButton.gameObject.SetActive(false); var scroll = UiKit.CreateGridScrollView( collectionArea, @@ -1474,7 +1473,7 @@ namespace Vanguard.UI private void ConfirmDismantleExtras() { - var plan = DeckListModel.PlanExtras(_collection); + var plan = DeckListModel.PlanExtras(_collection, _catalog); if (plan.IsEmpty || _busy) return; @@ -1545,9 +1544,14 @@ namespace Vanguard.UI if (_dismantleAllButton == null) return; - var plan = DeckListModel.PlanExtras(_collection); - _dismantleAllButton.gameObject.SetActive(!plan.IsEmpty); + var plan = DeckListModel.PlanExtras(_collection, _catalog); + _dismantleAllButton.gameObject.SetActive(true); _dismantleAllButton.interactable = !plan.IsEmpty && !_busy; + SetButtonLabel( + _dismantleAllButton, + plan.IsEmpty + ? "Распылить лишнее" + : "Распылить лишнее (" + plan.CardCount + ")"); } // ------------------------------------------------------------ карточка diff --git a/client/Assets/Vanguard/Runtime/UI/DeckListFilter.cs b/client/Assets/Vanguard/Runtime/UI/DeckListFilter.cs index db33176..f5dd0c7 100644 --- a/client/Assets/Vanguard/Runtime/UI/DeckListFilter.cs +++ b/client/Assets/Vanguard/Runtime/UI/DeckListFilter.cs @@ -209,7 +209,9 @@ namespace Vanguard.UI /// План распыления лишних копий: всё сверх 4 на конкретный принт /// (номер карты). SP/TD не распыляются, поэтому пропускаются. /// - public static DismantlePlan PlanExtras(IEnumerable collection) + public static DismantlePlan PlanExtras( + IEnumerable collection, + IReadOnlyDictionary catalog = null) { var plan = new DismantlePlan(); if (collection == null) @@ -218,8 +220,18 @@ namespace Vanguard.UI foreach (var item in collection) { var extra = item.Count - 4; - var dust = DustFor(item.Rarity); - if (extra <= 0 || dust <= 0) + if (extra <= 0) + continue; + + var rarity = item.Rarity; + if (catalog != null && catalog.TryGetValue(item.PrintingId, out var meta) + && !string.IsNullOrEmpty(meta.Rarity)) + { + rarity = meta.Rarity; + } + + var dust = DustFor(rarity); + if (dust <= 0) continue; plan.Add(item.PrintingId, extra, extra * dust);