/** Textes et libellés en français */

import { getColorNames } from "./loot-tables.js";

const colorNames = getColorNames();
export const eggTypeLabel = Object.fromEntries(
  colorNames.map((key, i) => [key, `Couleur ${i + 1}`])
);

const animalLabelEntries = [];
for (let c = 0; c < 15; c++) {
  for (let r = 0; r < 5; r++) {
    const id = `c${c}_r${r}`;
    animalLabelEntries.push([id, `C${c + 1} Niv.${r + 1}`]);
  }
}
export const animalLabel = Object.fromEntries(animalLabelEntries);

export const rarityLabel = {
  "1": "Niveau 1",
  "2": "Niveau 2",
  "3": "Niveau 3",
  "4": "Niveau 4",
  "5": "Niveau 5",
  Common: "Commun",
  Uncommon: "Peu commun",
  Rare: "Rare",
  Epic: "Épique",
  Legendary: "Légendaire",
};

export const t = {
  title: "Construis un zoo",
  plotTitle: "Parcelle",
  zooTabTitle: "Carte du zoo",
  worldMapTabTitle: "Carte du monde",
  statusTemplate: "Pièces : %d · Parcelle %d · Compétences %d · Case : %d,%d · Œufs à placer : %d",
  conveyorHint: "Cliquez sur un œuf sur le tapis pour l’acheter, puis sur une case pour le placer. Glissez-déposez un œuf ou un animal pour le déplacer.",
  buyFailed: "Achat impossible : %s",
  boughtToken: "Œuf %s acheté (à placer sur la grille).",
  upgradeConveyor: "Améliorer le tapis",
  upgradeConveyorCost: "%d pièces",
  upgradePlot: "Agrandir la parcelle",
  upgradePlotCost: "%d pièces",
  sellAnimal: "Vendre (glisser l’animal sur le camion)",
  upgradeConveyorFailed: "Amélioration tapis impossible : %s",
  upgradePlotFailed: "Agrandissement impossible : %s",
  upgradeWorldMapFailed: "Agrandissement carte impossible : %s",
  sellFailed: "Vente impossible : %s",
  errorPrefix: "Erreur : %s",
  noOffer: "—",
  helpConveyor: "Carte du monde : d’autres zoos (et le vôtre) proposent des œufs. Plus vos compétences sont développées, plus vous voyez de zoos avec des œufs chers. Cliquez sur un œuf pour l’acheter.",
  helpGrid: "Cliquez sur une case pour la sélectionner. Si vous avez un œuf acheté, un clic place l’œuf ici. Glissez un œuf ou un animal vers une case vide pour le déplacer. Glissez un animal sur le camion pour le vendre à un autre zoo.",
  helpUpgradeConveyor: "Développe les compétences : accès à plus de zoos et types d’œufs (Océan, Montagne).",
  helpUpgradePlot: "Agrandit la grille pour placer plus d’animaux.",
  helpUpgradeWorldMap: "Agrandit la vue de la carte du monde (zoom).",
  helpSell: "Glissez un animal depuis la grille et déposez-le sur le camion pour le vendre à un autre zoo.",
  helpStatus: "Pièces, niveau de parcelle, case sélectionnée, niveau de compétences, visiteurs, œufs à vendre sur la carte.",
};

/** Messages d'erreur pour les codes renvoyés par le jeu */
export const errorMessage = {
  OfferUnavailable: "Cette offre n’est plus disponible.",
  NotEnoughCoins: "Pas assez de pièces.",
  UnknownEgg: "Type d’œuf inconnu.",
  InvalidToken: "Œuf invalide ou déjà placé.",
  OutOfBounds: "Case hors de la grille.",
  Occupied: "Case déjà occupée.",
  ConveyorMaxLevel: "Compétences déjà au niveau max.",
  TruckMaxLevel: "Camion déjà au niveau max.",
  PlotMaxLevel: "Parcelle déjà au niveau max.",
  WorldMapMaxLevel: "Carte du monde déjà au niveau max.",
  NotEnoughResearch: "Pas assez d’unités de recherche.",
  NoAnimal: "Aucun animal sur cette case.",
  NoSchool: "Aucune école sur cette case.",
  SameCell: "Source et destination identiques.",
  NoSource: "Aucun objet sur la case de départ.",
  NurseryMaxLevel: "Nurserie au niveau max.",
  SouvenirShopMaxLevel: "Boutique au niveau max.",
  NotNursery: "Ce n’est pas une nurserie.",
  NotSouvenirShop: "Ce n’est pas une boutique.",
  BabyNotMature: "Le bébé n’est pas encore prêt.",
  NoBabyInNursery: "Aucun bébé dans cette nurserie.",
  AnimalNotReady: "L’animal n’est pas encore prêt (accueil).",
  NoAnimalInReception: "Aucun animal dans cet accueil.",
};

export const questDescription = {
  questPlaceEggs: "Placer %d œuf(s)",
  questEarnCoins: "Gagner %d pièces",
  questSellAnimals: "Vendre %d animal(aux)",
  questUpgradeConveyor: "Développer les compétences (%d fois)",
  questUpgradePlot: "Agrandir la parcelle (%d fois)",
};

export const timePhaseLabel = { dawn: "Aube", day: "Jour", dusk: "Crépuscule", night: "Nuit" };
export const weatherLabel = { sun: "Ensoleillé", cloudy: "Nuageux", rain: "Pluie" };
export const prestigeLabel = "Prestige (reset avec bonus permanent)";
export const prestigeButton = "Réinitialiser (Prestige +%d)";
export const prestigeHint = "Réinitialise tout et ajoute un bonus permanent de revenus. Coût min. : %d pièces.";
export const seasonLabel = { spring: "Printemps", summer: "Été", autumn: "Automne", winter: "Hiver" };
export const seasonChangeToast = "C'est le %s !";
export const visitorsLabel = "Visiteurs";
export const musicLabel = "Musique";
export const incidentLabel = {
  thirst: "Soif",
  bin: "Poubelle pleine",
  bench: "Banc requis",
  animalFar: "Animal trop loin",
  photo: "Envie de photo",
};
export const incidentBubbleAria = "Résoudre l'incident (cliquer pour bonus)";
export const sellZoneTitle = "Vente : glissez un animal ici (envoi à un autre zoo)";
export const worldMapTitle = "Carte du monde";
export const sellZoneShortLabel = "Vente";
export const restartButton = "Recommencer";
export const helpRestart = "Recommence une nouvelle partie sans bonus de prestige.";
export const questsTitle = "Objectifs du jour";

export const salesPanelAriaLabel = "Enchères et ventes";
export const salesPanelMySales = "Mes ventes";
export const salesPanelToRecover = "À récupérer";
export const salesPanelAuctions = "Enchères";
export const salesBtnAccept = "Accepter";
export const salesBtnReject = "Refuser";
export const salesBtnDeliver = "Récupérer";
export const salesBtnBid = "Enchérir";
export const salesPendingValidation = "En attente de validation";
export const salesValidationInMinutes = "Validation dans %s min";
export const salesBidInputAriaLabel = "Montant de l'enchère";
export const noFreeNursery = "Plus de place en nurserie";
export const noFreeReception = "Plus de place à l'accueil";

/** Auto-mode profile families (1–5). */
export const autoProfileFamilyLabel = {
  1: "Conservateurs",
  2: "Éleveurs",
  3: "Commerçants",
  4: "Expansionnistes",
  5: "Scientifiques",
};

/**
 * Auto-mode specialisation label by profile id (1–50). Keys are string numbers.
 * @type {Record<string, string>}
 */
export const autoProfileSpecialisationLabel = (() => {
  const out = {};
  const familyNames = ["Conservateur", "Éleveur", "Commerçant", "Expansionniste", "Scientifique"];
  for (let f = 0; f < 5; f++) {
    for (let i = 1; i <= 10; i++) {
      const id = f * 10 + i;
      out[String(id)] = `${familyNames[f]} ${i}`;
    }
  }
  return out;
})();

/** Auto-mode priorities text by profile id (1–50). Keys are string numbers. */
export const autoProfilePrioritiesLabel = (() => {
  const out = {};
  for (let id = 1; id <= 50; id++) out[String(id)] = `Priorités profil ${id}`;
  return out;
})();

/** Auto-mode risks text by profile id (1–50). Keys are string numbers. */
export const autoProfileRisksLabel = (() => {
  const out = {};
  for (let id = 1; id <= 50; id++) out[String(id)] = `Risques profil ${id}`;
  return out;
})();

export const autoProfilePickerTitle = "Choisir le profil du mode auto";
export const autoProfilePickerFamilyStep = "Choisir une famille";
export const autoProfilePickerSpecialisationStep = "Choisir une spécialisation";
export const autoProfileActivate = "Activer avec ce profil";
export const autoProfileCancel = "Annuler";
