1
This commit is contained in:
@@ -341,6 +341,46 @@ function resolveSceneCardImage(params: {
|
||||
return firstActImageSrc || params.sceneImageSrc?.trim() || '';
|
||||
}
|
||||
|
||||
function collectSceneActImagePreviews(sceneChapters: SceneChapterBlueprint[]) {
|
||||
return sceneChapters.flatMap((chapter) =>
|
||||
chapter.acts
|
||||
.map((act, index) => ({
|
||||
id: act.id.trim() || `${chapter.id}-act-${index}`,
|
||||
title: act.title.trim() || `第${index + 1}幕`,
|
||||
imageSrc: act.backgroundImageSrc?.trim() || '',
|
||||
}))
|
||||
.filter((act) => act.imageSrc),
|
||||
);
|
||||
}
|
||||
|
||||
function SceneActPreviewStrip({
|
||||
acts,
|
||||
sceneName,
|
||||
}: {
|
||||
acts: Array<{ id: string; title: string; imageSrc: string }>;
|
||||
sceneName: string;
|
||||
}) {
|
||||
if (acts.length <= 0) return null;
|
||||
|
||||
return (
|
||||
<div className="flex w-full gap-1.5 overflow-x-auto pb-0.5">
|
||||
{acts.map((act) => (
|
||||
<div
|
||||
key={act.id}
|
||||
className="platform-subpanel h-12 w-[5.25rem] shrink-0 overflow-hidden rounded-xl"
|
||||
title={act.title}
|
||||
>
|
||||
<ResolvedAssetImage
|
||||
src={act.imageSrc}
|
||||
alt={`${sceneName}-${act.title}`}
|
||||
className="h-full w-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function CatalogCard({
|
||||
title,
|
||||
description,
|
||||
@@ -1015,6 +1055,7 @@ export function CustomWorldEntityCatalog({
|
||||
sceneChapters: openingSceneChapters,
|
||||
}),
|
||||
sceneChapters: openingSceneChapters,
|
||||
actPreviews: collectSceneActImagePreviews(openingSceneChapters),
|
||||
searchText: [
|
||||
buildOpeningSceneSearchText(profile, resolvedCampScene),
|
||||
buildSceneChapterSearchText(openingSceneChapters, roleById),
|
||||
@@ -1039,6 +1080,7 @@ export function CustomWorldEntityCatalog({
|
||||
sceneChapters,
|
||||
}),
|
||||
sceneChapters,
|
||||
actPreviews: collectSceneActImagePreviews(sceneChapters),
|
||||
searchText: [
|
||||
buildLandmarkSearchText(landmark, storyNpcById, landmarkById),
|
||||
buildSceneChapterSearchText(sceneChapters, roleById),
|
||||
@@ -1576,6 +1618,12 @@ export function CustomWorldEntityCatalog({
|
||||
tone="landscape"
|
||||
/>
|
||||
}
|
||||
actions={
|
||||
<SceneActPreviewStrip
|
||||
acts={scene.actPreviews}
|
||||
sceneName={scene.name}
|
||||
/>
|
||||
}
|
||||
disabled={scene.kind === 'camp' && isBulkDeleteMode}
|
||||
/>
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user