handle null element weapon images in frontend
This commit is contained in:
parent
696d792a8b
commit
90ea38e15f
4 changed files with 18 additions and 13 deletions
|
|
@ -13,13 +13,16 @@
|
||||||
// Get transformation suffix for transcendence
|
// Get transformation suffix for transcendence
|
||||||
const transformation = $derived(weapon.transcendenceStep > 0 ? '02' : undefined)
|
const transformation = $derived(weapon.transcendenceStep > 0 ? '02' : undefined)
|
||||||
|
|
||||||
// Use instance element for element-changeable weapons
|
// Use instance element for element-changeable weapons, default to 0 (no element image) if not set
|
||||||
const displayElement = $derived(weapon.weapon?.element === 0 ? weapon.element : undefined)
|
const displayElement = $derived(weapon.weapon?.element === 0 ? (weapon.element ?? 0) : undefined)
|
||||||
|
|
||||||
const imageUrl = $derived(
|
const imageUrl = $derived(
|
||||||
getWeaponImage(weapon.weapon?.granblueId, 'grid', displayElement, transformation)
|
getWeaponImage(weapon.weapon?.granblueId, 'grid', displayElement, transformation)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Get awakening image URL
|
||||||
|
const awakeningImage = $derived(getAwakeningImage(weapon.awakening ?? undefined))
|
||||||
|
|
||||||
const displayName = $derived.by(() => {
|
const displayName = $derived.by(() => {
|
||||||
const name = weapon.weapon?.name
|
const name = weapon.weapon?.name
|
||||||
if (!name) return '—'
|
if (!name) return '—'
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
// Get transformation suffix for transcendence
|
// Get transformation suffix for transcendence
|
||||||
const transformation = $derived(weapon.transcendenceStep > 0 ? '02' : undefined)
|
const transformation = $derived(weapon.transcendenceStep > 0 ? '02' : undefined)
|
||||||
|
|
||||||
// Use instance element for element-changeable weapons
|
// Use instance element for element-changeable weapons, default to 0 (no element image) if not set
|
||||||
const displayElement = $derived(weapon.weapon?.element === 0 ? weapon.element : undefined)
|
const displayElement = $derived(weapon.weapon?.element === 0 ? (weapon.element ?? 0) : undefined)
|
||||||
|
|
||||||
const imageUrl = $derived(
|
const imageUrl = $derived(
|
||||||
getWeaponImage(weapon.weapon?.granblueId, 'grid', displayElement, transformation)
|
getWeaponImage(weapon.weapon?.granblueId, 'grid', displayElement, transformation)
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,8 @@
|
||||||
const isMain = position === -1 || item?.mainhand
|
const isMain = position === -1 || item?.mainhand
|
||||||
const variant = isMain ? 'main' : 'grid'
|
const variant = isMain ? 'main' : 'grid'
|
||||||
|
|
||||||
// For weapons with null element that have an instance element, use it
|
// For element-changeable weapons (element === 0), use instance element or default to 0 (no element image)
|
||||||
const element = item?.weapon?.element === 0 && item?.element ? item.element : undefined
|
const element = item?.weapon?.element === 0 ? (item?.element ?? 0) : undefined
|
||||||
|
|
||||||
return getWeaponImage(item?.weapon?.granblueId, variant, element)
|
return getWeaponImage(item?.weapon?.granblueId, variant, element)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -93,8 +93,8 @@ export function getImageUrl(
|
||||||
return `${basePath}/${id}_${pose}${extension}`
|
return `${basePath}/${id}_${pose}${extension}`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle weapon grid element variants
|
// Handle weapon grid element variants (including element 0 for null-element weapons)
|
||||||
if (type === 'weapon' && variant === 'grid' && options?.element && options.element > 0) {
|
if (type === 'weapon' && variant === 'grid' && options?.element !== undefined && options.element >= 0) {
|
||||||
return `${basePath}/${id}_${options.element}${extension}`
|
return `${basePath}/${id}_${options.element}${extension}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -143,8 +143,8 @@ export function getWeaponImage(
|
||||||
const extension = getFileExtension('weapon', variant)
|
const extension = getFileExtension('weapon', variant)
|
||||||
const basePath = `${getBasePath()}/${directory}`
|
const basePath = `${getBasePath()}/${directory}`
|
||||||
|
|
||||||
// Handle element-specific weapon grids
|
// Handle element-specific weapon grids (including element 0 for null-element weapons)
|
||||||
if (variant === 'grid' && element && element > 0) {
|
if (variant === 'grid' && element !== undefined && element >= 0) {
|
||||||
return `${basePath}/${id}_${element}${extension}`
|
return `${basePath}/${id}_${element}${extension}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,15 +238,17 @@ export function getCharacterImageWithPose(
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get weapon grid image with element support
|
* Get weapon grid image with element support
|
||||||
|
* For element-changeable weapons (element === 0), uses instanceElement or defaults to 0 (no element image)
|
||||||
*/
|
*/
|
||||||
export function getWeaponGridImage(
|
export function getWeaponGridImage(
|
||||||
id: string | number | null | undefined,
|
id: string | number | null | undefined,
|
||||||
element?: number,
|
element?: number,
|
||||||
instanceElement?: number
|
instanceElement?: number
|
||||||
): string {
|
): string {
|
||||||
// Handle element-specific weapons (primal weapons)
|
// Handle element-changeable weapons (element 0 means null/changeable)
|
||||||
if (id && element === 0 && instanceElement) {
|
// Use instance element if set, otherwise default to 0 (no element selected image)
|
||||||
return getImageUrl('weapon', id, 'grid', { element: instanceElement })
|
if (id && element === 0) {
|
||||||
|
return getImageUrl('weapon', id, 'grid', { element: instanceElement ?? 0 })
|
||||||
}
|
}
|
||||||
return getImageUrl('weapon', id, 'grid')
|
return getImageUrl('weapon', id, 'grid')
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue