9623bdeede
Bug #1 (QS wrong watermark): extracted card_face_asset_path() pure helper so the (Rank, Suit) → filename mapping is tested in isolation. 6 new unit tests confirm all 52 keys are unique and each suit resolves to its correct letter. QS.png has the wrong artwork baked in (confirmed via MD5); QS_BUG.md documents the required asset replacement. Bug #2/#3 (red square / invisible black suit on Android): add_android_corner_label used TextFont { ..default() } which gives Bevy's built-in font — that font lacks U+2660–U+2666, so suit glyphs rendered as a colored missing-glyph rectangle. Threaded Option<&Handle<Font>> from sync_cards_startup/on_change → sync_cards → spawn/update_card_entity → add_android_corner_label, which now passes FiraMono explicitly. Non-Android builds silence the unused param with let _ = font_handle. Bug #4 (waste pile): static analysis found no z or fan-offset bug; two new tests (waste_pile_cards_have_strictly_increasing_z, _draw_one_cards_have_distinct_z) pin the invariant for future changes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
17 lines
755 B
Markdown
17 lines
755 B
Markdown
# QS.png — Asset Content Bug
|
||
|
||
**Status:** Needs manual fix — replace `QS.png` with correct artwork.
|
||
|
||
**Symptom:** The Queen of Spades card renders with a diamond watermark baked
|
||
into the PNG artwork, while the top-left Android overlay correctly shows "Q♠".
|
||
|
||
**Diagnosis:**
|
||
- The code-side mapping (`card_face_asset_path(Rank::Queen, Suit::Spades)`)
|
||
correctly returns `"cards/faces/classic/QS.png"` — confirmed by unit test.
|
||
- `QS.png` and `QD.png` have distinct MD5 hashes, so they are not the same
|
||
file. The bug is in the pixel content of `QS.png` itself.
|
||
|
||
**Fix:** Replace `QS.png` with a correctly-drawn Queen of Spades image (spade
|
||
watermark, not diamond). The image should be 120×168 px to match every other
|
||
card face in this directory.
|