From 7885709d14d65c5a92d7ad4169a94f224a3d508d Mon Sep 17 00:00:00 2001 From: MpakobecEx Date: Sun, 1 Nov 2026 23:16:46 +0500 Subject: [PATCH] =?UTF-8?q?fix(deckbuilder):=20=C2=AB=D0=A0=D0=B0=D1=81?= =?UTF-8?q?=D0=BF=D1=8B=D0=BB=D0=B8=D1=82=D1=8C=20=D0=BB=D0=B8=D1=88=D0=BD?= =?UTF-8?q?=D0=B5=D0=B5=C2=BB=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=B8=D1=81=D1=87=D0=B5=D0=B7=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Кнопка всегда видна; при отсутствии лишних копий неактивна. При наличии показывает количество: «Распылить лишнее (N)». - Редкость для расчёта берётся из каталога по printingId, а не из ответа коллекции (исключает расхождение формата и пустой план). - EditMode 71/71, standalone собран. --- .../Vanguard/Runtime/UI/DeckBuilderView.cs | 12 ++++++++---- .../Vanguard/Runtime/UI/DeckListFilter.cs | 18 +++++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) 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);