feat: 背面图案支持 + 大小王素材位置微调 + 10号牌pip修复

This commit is contained in:
Poker Design Developer
2026-06-01 21:48:51 +08:00
parent f64c94a2f4
commit b0cdd8c3ad
6 changed files with 324 additions and 37 deletions

View File

@@ -79,6 +79,24 @@
</div>
</section>
<!-- 图片位置微调大小王 / 背面 -->
<section v-if="showImageOffset">
<h4>图片位置微调</h4>
<p class="hint">拖动滑块微调素材图片的位置与缩放0 = 默认</p>
<div class="pip-row">
<label class="mini-label">dx</label>
<input type="range" min="-0.05" max="0.05" step="0.005"
:value="imageOffsetVal('image_dx')" @input="setImageOffset('image_dx', $event.target.value)" />
<label class="mini-label">dy</label>
<input type="range" min="-0.05" max="0.05" step="0.005"
:value="imageOffsetVal('image_dy')" @input="setImageOffset('image_dy', $event.target.value)" />
<label class="mini-label">缩放</label>
<input type="range" min="0.6" max="1.4" step="0.05"
:value="imageOffsetVal('image_scale')" @input="setImageOffset('image_scale', $event.target.value)" />
</div>
<button @click="resetImageOffset" class="mini ghost">重置图片位置</button>
</section>
<!-- 数字牌花色位置微调 -->
<section v-if="isNumberCard">
<h4>数字牌花色位置微调</h4>
@@ -141,9 +159,7 @@ function setBorder(path, v) { store.patchDesign(path, v) }
function setSuit(suit, path, v) { store.patchDesign(`suit_symbols.${suit}.${path}`, v) }
function setDesign(path, v) { store.patchDesign(path, v) }
const canHaveOverride = computed(() => {
return !isJoker(store.currentCard) && store.currentCard !== 'back'
})
const canHaveOverride = computed(() => true)
function setOverrideBg() {
if (!canHaveOverride.value) return
store.patchCardOverride(store.currentCard, 'background_color', design.value.background_color)
@@ -161,6 +177,25 @@ const isNumberCard = computed(() => {
return /^[0-9]+$/.test(r) || r === 'A'
})
const showImageOffset = computed(() => {
return isJoker(store.currentCard) || store.currentCard === 'back'
})
function imageOffsetVal(key) {
if (!override.value) return key === 'image_scale' ? 1 : 0
const v = Number(override.value[key])
if (Number.isNaN(v)) return key === 'image_scale' ? 1 : 0
return v
}
function setImageOffset(key, val) {
store.patchCardOverride(store.currentCard, key, parseFloat(val))
}
function resetImageOffset() {
store.patchCardOverride(store.currentCard, 'image_dx', 0)
store.patchCardOverride(store.currentCard, 'image_dy', 0)
store.patchCardOverride(store.currentCard, 'image_scale', 1)
}
const selectedRank = ref(1)
watch(() => store.currentCard, () => {
if (isNumberCard.value) {