/** * FEAT-4: Anzeigefarben der Farbschlag-Chips auf den Stammbaum-Karten. * * Reine Präsentation (angenäherte Fellfarben) — KEINE Genetik. Schlüssel sind * die Basisnamen aus dem GEN-1-Katalog (src/genetics/catalog.ts BASE_COLORS); * Modifikatoren („… Schecke“, „… Rex“) werden über den Basisnamen-Präfix * aufgelöst. Unbekannte Namen → null, die Karte nutzt dann den neutralen Chip. */ export interface ChipColor { readonly bg: string readonly fg: string } const CHIP_COLORS: Record = { // Colourpoint / C-Serie // GEN-4c: PEW renamed to REW in catalog (Julian: PEW=REW). Both kept here for // backward-compat during DB migration (old animals may still carry the old name). 'REW': { bg: '#f7f3ec', fg: '#8a7d6b' }, 'Pink Eyed White (PEW)': { bg: '#f7f3ec', fg: '#8a7d6b' }, Hermelin: { bg: '#f3ede2', fg: '#8a7d6b' }, Himalaya: { bg: '#efe6d8', fg: '#8a7d6b' }, Zobel: { bg: '#6b4f3a', fg: '#ffffff' }, // Schimmel Schwarzschimmel: { bg: '#7a7470', fg: '#ffffff' }, Rotaugenschimmel: { bg: '#c0a99a', fg: '#3b3026' }, // Schwarzäugige Vollfarben Agouti: { bg: '#b3854d', fg: '#ffffff' }, Schwarz: { bg: '#2f2a26', fg: '#ffffff' }, Silberagouti: { bg: '#b9b3a8', fg: '#3b3026' }, Anthrazit: { bg: '#5a5550', fg: '#ffffff' }, Algierfuchs: { bg: '#c98a3d', fg: '#ffffff' }, Blau: { bg: '#8a93a5', fg: '#ffffff' }, // Rotäugige Vollfarben Gold: { bg: '#d9a441', fg: '#3b3026' }, Platin: { bg: '#c8c2bd', fg: '#3b3026' }, Goldfuchs: { bg: '#e0b15e', fg: '#3b3026' }, Rotfuchs: { bg: '#b56a3c', fg: '#ffffff' }, 'dd Gold': { bg: '#e3c98f', fg: '#3b3026' }, 'dd Platin': { bg: '#d9d4cf', fg: '#3b3026' }, } /** Chipfarbe für einen Farbschlag-Namen (inkl. Modifikator-Suffixen). */ export function chipColorFor(farbschlag: string): ChipColor | null { const exact = CHIP_COLORS[farbschlag] if (exact) return exact // Modifikatoren abgetrennt: längster passender Basisname gewinnt. let best: ChipColor | null = null let bestLength = 0 for (const [name, color] of Object.entries(CHIP_COLORS)) { if (farbschlag.startsWith(name + ' ') && name.length > bestLength) { best = color bestLength = name.length } } return best }