diff --git a/app/api/teams/[teamId]/image/route.tsx b/app/api/teams/[teamId]/image/route.tsx index 2834d98..08c7bf7 100644 --- a/app/api/teams/[teamId]/image/route.tsx +++ b/app/api/teams/[teamId]/image/route.tsx @@ -28,6 +28,13 @@ function amount(value: number): string { return new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(value); } +function weaponBackground(rarity: number | null): string { + if (rarity === 5) return "linear-gradient(90deg, #8a5a00 0%, #0f0800 100%)"; + if (rarity === 4) return "linear-gradient(90deg, #a300b8 0%, #000000 100%)"; + if (rarity === 3) return "linear-gradient(90deg, #00a0b5 0%, #000000 100%)"; + return "#17383d"; +} + function contentDisposition(teamName: string): string { const displayName = teamName.trim() || "team"; const fallback = displayName @@ -70,8 +77,15 @@ export async function GET( const seconds = Number(team.rotationSeconds); const dps = seconds > 0 ? total / seconds : 0; const fonts = await anuphanFonts; - const memberImages = await Promise.all( - team.members.map((member) => pngDataUrl(member.character.imageUrl)), + const memberAssets = await Promise.all( + team.members.map(async (member) => { + const [character, weapon, artifact] = await Promise.all([ + pngDataUrl(member.character.imageUrl), + member.weapon ? pngDataUrl(member.weapon.imageUrl) : null, + member.artifact ? pngDataUrl(member.artifact.imageUrl) : null, + ]); + return { character, weapon, artifact }; + }), ); return new ImageResponse( @@ -104,9 +118,9 @@ export async function GET( const percent = total > 0 ? (damage / total) * 100 : 0; return (
- {memberImages[index] ? ( + {memberAssets[index].character ? ( )} +
+ {member.weapon && memberAssets[index].weapon ? ( +
+ +
+ R{member.refinement} +
+
+ ) : null} + {member.artifact && memberAssets[index].artifact ? ( +
+ +
+ ) : null} +
-
{member.character.name}
+
C{member.constellation} ยท {member.character.name}
{amount(damage)}