--- 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
); }) }