From 0f57cae50de87b9be13c60e0fc65374654b5f204 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Sun, 7 Jun 2026 22:47:54 -0400 Subject: [PATCH] =?UTF-8?q?Sea=20Select:=20spread=20center=20significator?= =?UTF-8?q?=20supplies=20the=20card-face=20image=20=E2=80=94=20TDD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The felt cross's CENTER significator was hardcoded to the corner-rank + suit-icon text thumbnail, so an image deck (RWS / Minchiate) showed a bare "0"+icon card instead of its face. Mirror my_sea: render the `.sig-stage-card-img` (image mode) when the sig's deck has card images, else fall through to the text thumbnail. The tray sig stays the simple thumbnail (user-spec). The sig's `deck_variant` is the card's OWN deck — the Sig Select pick is drawn from the Role Select contributed deck (`_room_deck_variant`), so this is the correct image source (no equipped_deck bug, unlike the earlier FLIP back-img). - IT: an image-deck significator renders the center `sea-sig-card sig-stage-card--image` - 949+ epic ITs green ; FLIP tint tweak (parallel edit): flipped-back overlay alpha 0.6 → 0.3 [[project-deck-segment-model]] Co-Authored-By: Claude Opus 4.8 (1M context) --- src/apps/epic/tests/integrated/test_views.py | 19 +++++++++++++++++++ src/static_src/scss/_card-deck.scss | 4 ++-- .../gameboard/_partials/_sea_overlay.html | 16 +++++++++++++--- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/apps/epic/tests/integrated/test_views.py b/src/apps/epic/tests/integrated/test_views.py index aa6e617..8c80f35 100644 --- a/src/apps/epic/tests/integrated/test_views.py +++ b/src/apps/epic/tests/integrated/test_views.py @@ -4180,6 +4180,25 @@ class PickSeaUnifiedFeltTest(TestCase): content = self.client.get(self.url).content.decode() self.assertNotIn("sig-stage-card-back-img", content) + def test_center_sig_renders_image_for_image_deck_sig(self): + """The spread's CENTER significator supplies the card-face image when its + deck has one (mirrors my_sea); the tray sig stays a simple thumbnail. The + sig's deck_variant is the card's OWN deck — the Sig Select pick comes from + the Role Select contributed deck, so this is the right source (no + equipped_deck bug, unlike the FLIP back-img). User-spec 2026-06-07.""" + minch = DeckVariant.objects.get(slug="minchiate-fiorentine-1860-1890") + il_matto = TarotCard.objects.filter(deck_variant=minch).first() + self.pc_seat.significator = il_matto + self.pc_seat.save(update_fields=["significator"]) + # my_tray_sig = confirmed_char.significator OR seat.significator → keep both. + char = Character.objects.get(seat=self.pc_seat, confirmed_at__isnull=False) + char.significator = il_matto + char.save(update_fields=["significator"]) + content = self.client.get(self.url).content.decode() + # Image-mode marker is unique to the felt cross center (the tray + preview + # sigs stay text-only). + self.assertIn("sea-sig-card sig-stage-card--image", content) + def test_always_two_deck_stacks_gravity_and_levity(self): """Unlike my_sea / Sig Select, the room Sea Select ALWAYS shows BOTH the Gravity + Levity stacks — the gamer draws from either populated half diff --git a/src/static_src/scss/_card-deck.scss b/src/static_src/scss/_card-deck.scss index 89152e4..30e910a 100644 --- a/src/static_src/scss/_card-deck.scss +++ b/src/static_src/scss/_card-deck.scss @@ -2348,10 +2348,10 @@ $_sea-title-els: '.fan-card-name, .sig-qualifier-above, .sig-qualifier-below, .f } } .sea-stage--gravity .sea-stage-card.is-flipped-to-back { - &::after { background: rgba(var(--quiUser), 0.6); } + &::after { background: rgba(var(--quiUser), 0.3); } } .sea-stage--levity .sea-stage-card.is-flipped-to-back { - &::after { background: rgba(var(--terUser), 0.6); } + &::after { background: rgba(var(--terUser), 0.3); } } // Sea stat block — reuses sig-select stat-block sizing, scoped to sea-stage. diff --git a/src/templates/apps/gameboard/_partials/_sea_overlay.html b/src/templates/apps/gameboard/_partials/_sea_overlay.html index ab95987..e06b80b 100644 --- a/src/templates/apps/gameboard/_partials/_sea_overlay.html +++ b/src/templates/apps/gameboard/_partials/_sea_overlay.html @@ -33,10 +33,20 @@ Each draw persists onto the seat's Character.celtic_cross via epic:sea_save. {% include "apps/gameboard/_partials/_my_sea_slot.html" with position="leave" saved=saved_by_position.leave crossing=False %}
-
+ {# Center significator — supply the card-FACE image when the sig's #} + {# deck has one (mirrors my_sea); else fall through to the corner- #} + {# rank + suit-icon text thumbnail (the tray sig stays text-only). #} + {# my_tray_sig's deck_variant is the card's OWN deck (the Sig #} + {# Select pick comes from the Role Select contributed deck via #} + {# _room_deck_variant), so this is the right image source. #} +
{% if my_tray_sig %} - {{ my_tray_sig.corner_rank }} - {% if my_tray_sig.suit_icon %}{% endif %} + {% if my_tray_sig.deck_variant.has_card_images %} + {{ my_tray_sig.name }} + {% else %} + {{ my_tray_sig.corner_rank }} + {% if my_tray_sig.suit_icon %}{% endif %} + {% endif %} {% endif %}