diff --git a/src/client/dev-dist/sw.js b/src/client/dev-dist/sw.js index 6ddc826..e77e2fa 100644 --- a/src/client/dev-dist/sw.js +++ b/src/client/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-5a5d9309'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "index.html", - "revision": "0.inrr5fp7a9" + "revision": "0.gg4oatbh7is" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { diff --git a/src/client/src/modules/game/CardComponent.tsx b/src/client/src/modules/game/CardComponent.tsx index 8a66f16..08af049 100644 --- a/src/client/src/modules/game/CardComponent.tsx +++ b/src/client/src/modules/game/CardComponent.tsx @@ -29,26 +29,39 @@ export const CardComponent: React.FC = ({ card, onDragStart, return () => unregisterCard(card.instanceId); }, [card.instanceId]); - // Robustly resolve Art Crop + // Robustly resolve Image Source based on viewMode let imageSrc = card.imageUrl; - if (card.image_uris) { - if (viewMode === 'cutout' && card.image_uris.crop) { - imageSrc = card.image_uris.crop; - } else if (card.image_uris.normal) { - imageSrc = card.image_uris.normal; - } - } else if (card.definition && card.definition.set && card.definition.id) { - if (viewMode === 'cutout') { + if (viewMode === 'cutout') { + // Priority 1: Local Cache (standard naming convention) - PREFERRED BY USER + if (card.definition?.set && card.definition?.id) { imageSrc = `/cards/images/${card.definition.set}/crop/${card.definition.id}.jpg`; - } else { + } + // Priority 2: Direct Image URIs (if available) - Fallback + else if (card.image_uris?.art_crop || card.image_uris?.crop) { + imageSrc = card.image_uris.art_crop || card.image_uris.crop!; + } + // Priority 3: Deep Definition Data + else if (card.definition?.image_uris?.art_crop) { + imageSrc = card.definition.image_uris.art_crop; + } + else if (card.definition?.card_faces?.[0]?.image_uris?.art_crop) { + imageSrc = card.definition.card_faces[0].image_uris.art_crop; + } + // Fallback: If no crop found, imageSrc remains card.imageUrl (likely full) + } else { + // Normal / Full View + // Priority 1: Local Cache (standard naming convention) - PREFERRED + if (card.definition?.set && card.definition?.id) { + // Check if we want standard full image path imageSrc = `/cards/images/${card.definition.set}/full/${card.definition.id}.jpg`; } - } else if (viewMode === 'cutout' && card.definition) { - if (card.definition.image_uris?.art_crop) { - imageSrc = card.definition.image_uris.art_crop; - } else if (card.definition.card_faces?.[0]?.image_uris?.art_crop) { - imageSrc = card.definition.card_faces[0].image_uris.art_crop; + // Priority 2: Direct Image URIs + else if (card.image_uris?.normal) { + imageSrc = card.image_uris.normal; + } + else if (card.definition?.image_uris?.normal) { + imageSrc = card.definition.image_uris.normal; } }