This commit is contained in:
6d486f49
2026-07-03 13:48:14 -04:00
parent b17f7e12db
commit e1cb1a81a3
2 changed files with 17 additions and 5 deletions
@@ -83,7 +83,7 @@
{ {
var count = CountInDeck(card.Name); var count = CountInDeck(card.Name);
var maxed = count >= 3; var maxed = count >= 3;
<div class="browser-card @(count > 0 ? "in-deck" : "") @(maxed ? "maxed" : "")" <div @key="card.Name" class="browser-card @(count > 0 ? "in-deck" : "") @(maxed ? "maxed" : "")"
@onclick="() => AddCard(card)" @onclick="() => AddCard(card)"
title="@(count > 0 ? $"{card.Name} ({count}/3)" : card.Name)"> title="@(count > 0 ? $"{card.Name} ({count}/3)" : card.Name)">
<div class="browser-card-img"> <div class="browser-card-img">
@@ -314,7 +314,13 @@
} }
} }
private int CountInDeck(string name) => deckCards.Count(c => c == name); private Dictionary<string, int> _deckCounts = new();
private void RebuildDeckCounts() =>
_deckCounts = deckCards.GroupBy(n => n).ToDictionary(g => g.Key, g => g.Count());
private int CountInDeck(string name) =>
_deckCounts.TryGetValue(name, out var c) ? c : 0;
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
@@ -339,23 +345,27 @@
deckNotes = deck.Notes ?? ""; deckNotes = deck.Notes ?? "";
deckCards = new List<string>(deck.Cards); deckCards = new List<string>(deck.Cards);
divers = new List<string>(deck.Divers); divers = new List<string>(deck.Divers);
RebuildDeckCounts();
} }
private void AddCard(CardData card) private void AddCard(CardData card)
{ {
if (CountInDeck(card.Name) >= 3) return; if (CountInDeck(card.Name) >= 3) return;
deckCards.Add(card.Name); deckCards.Add(card.Name);
RebuildDeckCounts();
} }
private void RemoveCard(string name) private void RemoveCard(string name)
{ {
var idx = deckCards.LastIndexOf(name); var idx = deckCards.LastIndexOf(name);
if (idx >= 0) deckCards.RemoveAt(idx); if (idx >= 0) deckCards.RemoveAt(idx);
RebuildDeckCounts();
} }
private void ClearDeck() private void ClearDeck()
{ {
deckCards.Clear(); deckCards.Clear();
RebuildDeckCounts();
} }
private void OpenDiverPicker(int slot) private void OpenDiverPicker(int slot)
@@ -261,7 +261,7 @@
background: var(--bg-surface); background: var(--bg-surface);
border: 2px solid transparent; border: 2px solid transparent;
transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease; transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
aspect-ratio: 5 / 8; height: 210px;
} }
.browser-card:hover { .browser-card:hover {
@@ -289,7 +289,7 @@
.browser-card-img { .browser-card-img {
position: relative; position: relative;
width: 100%; width: 100%;
padding-bottom: 140%; height: calc(100% - 26px);
overflow: hidden; overflow: hidden;
background: #0e0e22; background: #0e0e22;
} }
@@ -340,13 +340,15 @@
.browser-card-name { .browser-card-name {
font-size: 0.7rem; font-size: 0.7rem;
font-weight: 600; font-weight: 600;
padding: 0.3rem 0.45rem; padding: 0 0.45rem;
background: var(--bg-elevated); background: var(--bg-elevated);
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
color: var(--text-primary); color: var(--text-primary);
letter-spacing: 0.01em; letter-spacing: 0.01em;
height: 26px;
line-height: 26px;
} }
/* ── Deck Panel ── */ /* ── Deck Panel ── */