...
This commit is contained in:
@@ -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 ── */
|
||||||
|
|||||||
Reference in New Issue
Block a user