feat: refine wooden fish runtime generation
This commit is contained in:
@@ -54,6 +54,10 @@ export function WoodenFishResultView({
|
||||
: draft.hitObjectAsset;
|
||||
const hitObjectSrc =
|
||||
hitObjectAsset?.imageSrc?.trim() || WOODEN_FISH_DEFAULT_HIT_OBJECT_SRC;
|
||||
const backgroundAsset = isWorkProfile
|
||||
? profile.backgroundAsset ?? draft.backgroundAsset
|
||||
: draft.backgroundAsset;
|
||||
const backgroundSrc = backgroundAsset?.imageSrc?.trim() || '';
|
||||
const hitSoundAsset = isWorkProfile
|
||||
? profile.hitSoundAsset
|
||||
: draft.hitSoundAsset;
|
||||
@@ -118,13 +122,24 @@ export function WoodenFishResultView({
|
||||
{description}
|
||||
</div>
|
||||
) : null}
|
||||
<div className="mt-4 grid min-h-0 flex-1 place-items-center rounded-[1.1rem] border border-[var(--platform-subpanel-border)] bg-white/78 p-5">
|
||||
<ResolvedAssetImage
|
||||
src={hitObjectSrc}
|
||||
fallbackSrc={WOODEN_FISH_DEFAULT_HIT_OBJECT_SRC}
|
||||
alt="敲击物图案"
|
||||
className="max-h-[min(46vh,22rem)] w-full object-contain drop-shadow-[0_18px_28px_rgba(15,23,42,0.18)]"
|
||||
/>
|
||||
<div className="mt-4 grid min-h-0 flex-1 place-items-center">
|
||||
<div className="relative grid aspect-[9/16] h-full max-h-[min(58vh,34rem)] w-full max-w-[20rem] place-items-center overflow-hidden rounded-[1.1rem] border border-[var(--platform-subpanel-border)] bg-white/78">
|
||||
{backgroundSrc ? (
|
||||
<ResolvedAssetImage
|
||||
src={backgroundSrc}
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="absolute inset-0 h-full w-full object-cover"
|
||||
/>
|
||||
) : null}
|
||||
<div className="absolute inset-0 bg-white/10" />
|
||||
<ResolvedAssetImage
|
||||
src={hitObjectSrc}
|
||||
fallbackSrc={WOODEN_FISH_DEFAULT_HIT_OBJECT_SRC}
|
||||
alt="敲击物图案"
|
||||
className="relative z-10 w-[68%] object-contain drop-shadow-[0_18px_28px_rgba(15,23,42,0.18)]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -95,6 +95,10 @@ export function WoodenFishRuntimeShell({
|
||||
profile?.hitObjectAsset?.imageSrc?.trim() ||
|
||||
profile?.draft.hitObjectAsset?.imageSrc?.trim() ||
|
||||
WOODEN_FISH_DEFAULT_HIT_OBJECT_SRC;
|
||||
const backgroundSrc =
|
||||
profile?.backgroundAsset?.imageSrc?.trim() ||
|
||||
profile?.draft.backgroundAsset?.imageSrc?.trim() ||
|
||||
'';
|
||||
const hitSoundSrc =
|
||||
profile?.hitSoundAsset?.audioSrc ?? profile?.draft.hitSoundAsset?.audioSrc;
|
||||
const { resolvedUrl: resolvedAudioUrl } = useResolvedAssetReadUrl(hitSoundSrc);
|
||||
@@ -217,6 +221,16 @@ export function WoodenFishRuntimeShell({
|
||||
onPointerDown={registerTap}
|
||||
>
|
||||
<div className="pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_50%_18%,rgba(255,255,255,0.92),transparent_26%),linear-gradient(180deg,#fff8e8_0%,#eef7ed_55%,#e5f2f7_100%)]" />
|
||||
{backgroundSrc ? (
|
||||
<ResolvedAssetImage
|
||||
src={backgroundSrc}
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
draggable={false}
|
||||
className="pointer-events-none absolute inset-0 h-full w-full object-cover"
|
||||
/>
|
||||
) : null}
|
||||
<div className="pointer-events-none absolute inset-0 bg-white/10" />
|
||||
|
||||
<header
|
||||
data-wooden-fish-functional="true"
|
||||
|
||||
Reference in New Issue
Block a user