Files
HaBit/lib/shop-preview.ts
Harkamal Randhawa ac0b102e78 Fix shop room preview showing solid green LCD background.
Include lib/ in Tailwind content so parallax room gradient classes from room-backgrounds.ts are emitted in production CSS.
2026-05-24 05:01:00 -06:00

50 lines
1.3 KiB
TypeScript

import type { AvatarCustomization } from "@/lib/avatar-customization-storage";
import { parseVariantId, parseShopStyleItem, type ShopItemRecord } from "@/lib/shop-catalog";
import {
normalizeRoomBackgroundId,
type RoomBackgroundId,
} from "@/lib/room-backgrounds";
/** Room id shown behind the pet in shop preview (shop item id, not image_path). */
export function getShopPreviewRoomId(
item: ShopItemRecord,
base: AvatarCustomization,
): RoomBackgroundId {
if (item.type === "room") {
return normalizeRoomBackgroundId(item.id);
}
return normalizeRoomBackgroundId(base.roomBackground);
}
/** Build a non-persisted avatar state showing how a shop item would look. */
export function buildShopItemPreviewCustomization(
base: AvatarCustomization,
item: ShopItemRecord,
): AvatarCustomization {
if (item.type === "room") {
return {
...base,
roomBackground: normalizeRoomBackgroundId(item.id),
};
}
const style = parseShopStyleItem(item.id, item.type);
if (!style) {
return base;
}
const nextEquipped = [
...base.equippedItems.filter((equippedId) => {
const equippedStyle = parseVariantId(equippedId);
return equippedStyle?.layerId !== style.layerId;
}),
item.id,
];
return {
...base,
equippedItems: nextEquipped,
};
}