aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-02-21 23:04:36 +0800
committerMistivia <i@mistivia.com>2025-02-21 23:04:36 +0800
commita13b2290833f635453622ed330cc3895950ffcdb (patch)
tree2501d940e76585e4ca448f7f07529ea8ddb56663 /src/components
parent2ebdfe109bbff27b35a5e9ae208dabddd266191e (diff)
add banlist
Diffstat (limited to 'src/components')
-rw-r--r--src/components/card_thumb.svelte77
-rw-r--r--src/components/main_panel.svelte25
-rw-r--r--src/components/right_panel.svelte6
3 files changed, 89 insertions, 19 deletions
diff --git a/src/components/card_thumb.svelte b/src/components/card_thumb.svelte
index 8e701ea..e68a37e 100644
--- a/src/components/card_thumb.svelte
+++ b/src/components/card_thumb.svelte
@@ -1,9 +1,8 @@
<script lang="js">
-
import { setLeftPanelCard } from '../left_panel';
import { cardImageUrl } from '../utils';
- let {id, area, idx} = $props();
+ let {id, area, idx, limitNum} = $props();
function onhover() {
setLeftPanelCard(id);
@@ -12,22 +11,74 @@
function onDragStart(e) {
e.dataTransfer.setData('text', JSON.stringify({id, area, idx}))
}
-
</script>
{#if id}
- <img
- style="margin:2px;"
- draggable="true"
- onmouseover={onhover}
- onfocus={onhover}
- ondragstart={onDragStart}
- height="100%"
- src={cardImageUrl(id)}
- alt="yugioh card {id}"
- />
+ <img
+ style="margin:2px;"
+ draggable="true"
+ onmouseover={onhover}
+ onfocus={onhover}
+ ondragstart={onDragStart}
+ height="100%"
+ src={cardImageUrl(id)}
+ alt="yugioh card {id}"
+ />
+ {#if limitNum === 1 || limitNum == 2}
+ <div class="overlay">{limitNum}</div>
+ {:else if limitNum === 0}
+ <div class="ban-overlay"></div>
+ {/if}
{/if}
<style>
+ .overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ border: 3px solid red;
+ border-radius: 50%;
+ background-color: black;
+ width: 20px;
+ height: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ color: yellow;
+ font-size: 15px;
+ font-family: Arial, sans-serif;
+ box-sizing: border-box;
+ pointer-events: none;
+ }
+
+ .ban-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ border: 3px solid red;
+ border-radius: 50%;
+ background-color: black;
+ width: 20px;
+ height: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ color: yellow;
+ font-size: 15px;
+ font-family: Arial, sans-serif;
+ box-sizing: border-box;
+ pointer-events: none;
+ }
+ .ban-overlay::after {
+ content: '';
+ width: 15px;
+ height: 3px;
+ background-color: red;
+ transform: rotate(45deg);
+ position: absolute;
+ pointer-events: none;
+ }
</style>
diff --git a/src/components/main_panel.svelte b/src/components/main_panel.svelte
index 2db7a34..1c55d49 100644
--- a/src/components/main_panel.svelte
+++ b/src/components/main_panel.svelte
@@ -1,6 +1,7 @@
<script lang="js">
import CardThumb from './card_thumb.svelte';
- import { deck, setDeck, deckOps } from '../deck';
+ import { deck, setDeck, deckOps, format, setFormat } from '../deck';
+ import { cardLimit } from '../card_db';
import {
parseYdk,
genYdk,
@@ -74,6 +75,8 @@
}
+
+
</script>
<input bind:this={fileInput} style="display:none;" onchange={loadDeck} type="file" class="file-input" accept=".ydk" />
@@ -84,6 +87,11 @@
<button class="btn" onclick={saveDeck}>保存</button>
<button class="btn" onclick={copyDeck}>复制到剪贴板</button>
<button class="btn" onclick={shareDeck}>分享</button>
+ <select bind:value={$format} class="select-format" id="format" onchange={()=>setFormat($format)}>
+ <option value="none">无禁限</option>
+ <option value="ocg">OCG</option>
+ </select>
+
</div>
<div class="deck-section">
<div class="deck-group">
@@ -91,7 +99,7 @@
<div role="region" ondragover={(e)=>e.preventDefault()} ondrop={(e)=>onDrop("main", e, -1)} class="card-grid main-deck">
{#each $deck.main as card, i}
<div class="card-grid-thumb" role="region" ondragover={(e)=>e.preventDefault()} ondrop={(e)=>onDrop("main", e, i)}>
- <CardThumb id={card} idx={i} area="main" />
+ <CardThumb id={card} idx={i} area="main" limitNum={cardLimit(card, $format)} />
</div>
{/each}
</div>
@@ -101,7 +109,7 @@
<div role="region" ondragover={(e)=>e.preventDefault()} ondrop={(e)=>onDrop("extra", e, -1)} class="card-grid extra-deck">
{#each $deck.extra as card, i}
<div class="card-grid-thumb" role="region" ondragover={(e)=>e.preventDefault()} ondrop={(e)=>onDrop("extra", e, i)}>
- <CardThumb id={card} idx={i} area="extra" />
+ <CardThumb id={card} idx={i} area="extra" limitNum={cardLimit(card, $format)} />
</div>
{/each}
</div>
@@ -111,7 +119,7 @@
<div role="region" ondragover={(e)=>e.preventDefault()} ondrop={(e)=>onDrop("side", e, -1)} class="card-grid side-deck">
{#each $deck.side as card, i}
<div class="card-grid-thumb" role="region" ondragover={(e)=>e.preventDefault()} ondrop={(e)=>onDrop("side", e, i)}>
- <CardThumb id={card} idx={i} area="side" />
+ <CardThumb id={card} idx={i} area="side" limitNum={cardLimit(card, $format)} />
</div>
{/each}
</div>
@@ -142,6 +150,14 @@
cursor: pointer;
}
+
+.select-format {
+ padding: 8px 8px;
+ margin-right: 10px;
+ cursor: pointer;
+ font-size: 1.1em;
+}
+
.deck-group {
margin-bottom: 30px;
}
@@ -163,6 +179,7 @@
}
.card-grid-thumb {
+ position: relative;
aspect-ratio: 1/1.4;
border-radius: 5px;
}
diff --git a/src/components/right_panel.svelte b/src/components/right_panel.svelte
index 816687e..9863d97 100644
--- a/src/components/right_panel.svelte
+++ b/src/components/right_panel.svelte
@@ -1,7 +1,8 @@
<script lang="js">
import CardThumb from './card_thumb.svelte';
import { changeInput, showingCards, onPrevPage, onNextPage } from '../search'
- import { deckOps } from '../deck';
+ import { deckOps, format } from '../deck';
+ import { cardLimit } from '../card_db';
function onChange(event) {
changeInput(event.target.value);
@@ -24,7 +25,7 @@
{#each $showingCards as card}
<div class="card-item">
<div class="card-thumbnail">
- <CardThumb id={card.id} idx={-1} area="search" />
+ <CardThumb id={card.id} idx={-1} area="search" limitNum={cardLimit(card.id, $format)} />
</div>
<span>{card.name}</span>
</div>
@@ -87,6 +88,7 @@
}
.card-thumbnail {
+ position: relative;
width: 50px;
height: 70px;
background-color: #eee;