diff --git a/src/lib/components/database/cells/RaidImageCell.svelte b/src/lib/components/database/cells/RaidImageCell.svelte index ff5d84da..b9f71c3e 100644 --- a/src/lib/components/database/cells/RaidImageCell.svelte +++ b/src/lib/components/database/cells/RaidImageCell.svelte @@ -2,8 +2,7 @@
- {#if raid.enemy_id} - + {#if iconUrl} + {:else}
{/if} diff --git a/src/lib/utils/images.ts b/src/lib/utils/images.ts index 18086f8b..38edd53a 100644 --- a/src/lib/utils/images.ts +++ b/src/lib/utils/images.ts @@ -447,10 +447,50 @@ export function getGuidebookImage(granblueId: string | number | undefined): stri return `${getBasePath()}/guidebooks/book_${granblueId}.png` } +// ===== Raid Images ===== + +export type RaidImageVariant = 'icon' | 'thumbnail' | 'lobby' | 'background' + +// Game CDN URLs for raid images +const RAID_ICON_CDN = 'https://prd-game-a-granbluefantasy.akamaized.net/assets_en/img/sp/assets/enemy/m' +const RAID_THUMBNAIL_CDN = 'https://prd-game-a1-granbluefantasy.akamaized.net/assets_en/img/sp/assets/summon/qm' +const RAID_LOBBY_CDN = 'https://prd-game-a1-granbluefantasy.akamaized.net/assets_en/img/sp/quest/assets/lobby' +const RAID_BACKGROUND_CDN = 'https://prd-game-a-granbluefantasy.akamaized.net/assets_en/img/sp/quest/assets/treasureraid' + /** - * Get raid image URL + * Get raid image URL (stored images from our CDN/local) + * @param variant - 'icon', 'thumbnail', 'lobby', or 'background' */ -export function getRaidImage(slug: string | undefined): string { +export function getRaidImage( + slug: string | undefined, + variant: RaidImageVariant = 'thumbnail' +): string { if (!slug) return getGenericPlaceholder() - return `${getBasePath()}/raids/${slug}.png` + const directory = `raid-${variant}` + return `${getBasePath()}/${directory}/${slug}.png` +} + +/** + * Get raid image from game CDN (for images tab and initial downloads) + * @param variant - 'icon', 'thumbnail', 'lobby', or 'background' + * @param id - enemy_id for icon, summon_id for thumbnail, quest_id for lobby/background + */ +export function getRaidCdnImage( + variant: RaidImageVariant, + id: number | undefined +): string { + if (!id) return getGenericPlaceholder() + + switch (variant) { + case 'icon': + return `${RAID_ICON_CDN}/${id}.png` + case 'thumbnail': + return `${RAID_THUMBNAIL_CDN}/${id}_high.png` + case 'lobby': + return `${RAID_LOBBY_CDN}/${id}1.png` + case 'background': + return `${RAID_BACKGROUND_CDN}/${id}/raid_image_new.png` + default: + return getGenericPlaceholder() + } }