--- import { getCollection } from "astro:content"; import GameLayout from "../layouts/GameLayout.astro"; const classes = await getCollection("classes"); const especes = await getCollection("especes"); const personnages = await getCollection("personnages"); const SPECTRUM = { // Encres (Classes) - Opacité 1.0 martial: "rgba(230, 57, 70, 1)", arcane: "rgba(0, 112, 255, 1)", divin: "rgba(200, 155, 60, 1)", primal: "rgba(42, 157, 143, 1)", hybride: "rgba(100, 100, 100, 1)", // Spectres (Espèces) - Opacité 0.4 (pour une meilleure visibilité) solaire: "rgba(200, 155, 60, 0.4)", elementaire: "rgba(0, 171, 255, 0.4)", terrestre: "rgba(139, 69, 19, 0.4)", sylvestre: "rgba(0, 128, 0, 0.4)", ombre: "rgba(75, 0, 130, 0.4)", }; // 1. Groupement par CLASSE (Bordure BAS = Espèce) const classData = personnages.reduce((acc, p) => { const pEspeceData = especes.find( (e) => e.id.toLowerCase() === p.data.espece?.toLowerCase(), ); const spectreKey = pEspeceData?.data.spectre?.toLowerCase(); p.data.classes_detail.forEach((c) => { if (!c.nom) return; const key = c.nom.toLowerCase(); if (!acc[key]) acc[key] = []; acc[key].push({ id: p.id, // ID nécessaire pour le lien nom: p.data.nom, niveau_classe: c.niveau, colorSpectre: SPECTRUM[spectreKey] || "rgba(200, 200, 200, 0.5)", }); }); return acc; }, {}); // 2. Groupement par ESPECE (Bordure HAUT = Classe principale) const especeData = personnages.reduce((acc, p) => { if (!p.data.espece) return acc; const key = p.data.espece.toLowerCase(); if (!acc[key]) acc[key] = []; const mainClassName = p.data.classes_detail?.[0]?.nom; const pClassData = classes.find( (cl) => cl.id.toLowerCase() === mainClassName?.toLowerCase() || cl.data.title?.toLowerCase() === mainClassName?.toLowerCase(), ); const encreKey = pClassData?.data.encre?.toLowerCase(); acc[key].push({ id: p.id, // ID nécessaire pour le lien nom: p.data.nom, niveau: p.data.niveau_global || 1, colorEncre: SPECTRUM[encreKey] || "#ffffff", }); return acc; }, {}); --- Choisissez votre Classe La classe définit vos compétences et votre rôle. { classes.map((charClass) => { const charactersInClass = classData[charClass.id.toLowerCase()] || []; const colorEncre = SPECTRUM[charClass.data.encre] || "#c89b3c"; return ( {charClass.data.title} {charactersInClass.map((p) => ( {p.nom} Niv.{p.niveau_classe} ))} {charClass.data.description} Détails ); }) } Choisissez votre Espèce L'espèce influence votre apparence et votre histoire. { especes.map((espece) => { const charactersInEspece = especeData[espece.id.toLowerCase()] || []; const colorBg = SPECTRUM[espece.data.spectre] || "rgba(255,255,255,1)"; return ( {espece.data.title} {charactersInEspece.map((p) => ( {p.nom} Niv.{p.niveau} ))} {espece.data.description} Détails ); }) }
La classe définit vos compétences et votre rôle.
{charClass.data.description}
L'espèce influence votre apparence et votre histoire.
{espece.data.description}