fix(deckbuilder): «Распылить лишнее» больше не исчезает
CI / test (push) Successful in 2m12s Details

- Кнопка всегда видна; при отсутствии лишних копий неактивна. При наличии
  показывает количество: «Распылить лишнее (N)».
- Редкость для расчёта берётся из каталога по printingId, а не из ответа
  коллекции (исключает расхождение формата и пустой план).
- EditMode 71/71, standalone собран.
This commit is contained in:
MpakobecEx 2026-11-01 23:16:46 +05:00
parent 9bd03cd6bc
commit 7885709d14
2 changed files with 23 additions and 7 deletions

View File

@ -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 + ")");
}
// ------------------------------------------------------------ карточка

View File

@ -209,7 +209,9 @@ namespace Vanguard.UI
/// План распыления лишних копий: всё сверх 4 на конкретный принт
/// (номер карты). SP/TD не распыляются, поэтому пропускаются.
/// </summary>
public static DismantlePlan PlanExtras(IEnumerable<CollectionItemDto> collection)
public static DismantlePlan PlanExtras(
IEnumerable<CollectionItemDto> collection,
IReadOnlyDictionary<string, CardCatalogItemDto> 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);