/**
 * @fileoverview Constantes de cores para blocos Blockly
 * @module constants.blocklyColors
 */

/**
 * Cores oficiais das categorias padrão do Blockly.
 * Baseado em: https://developers.google.com/blockly/guides/create-custom-blocks/define-blocks
 */
export const CORES_BLOCKLY = {
  LOGICA: 210,
  LOOPS: 120,
  MATEMATICA: 230,
  TEXTO: 160,
  LISTAS: 260,
  COR: 20,
  VARIAVEIS: 330,
};

/**
 * Cores para categorias customizadas comuns nos jogos.
 */
export const CORES_CUSTOMIZADAS = {
  MOVIMENTO: 210,     // Mesma cor de Lógica
  SENSORES: 270,
  TEMPO: 290,
  MIDIA: 180,
  CANETA: 180,
  CONTROLE: 120,      // Mesma cor de Loops
  CONDICIONAL: 210,   // Mesma cor de Lógica
};

/**
 * Mapeamento de nomes de categorias para cores.
 * Prioriza cores padrão do Blockly quando o nome corresponde.
 */
export const MAPA_CORES_CATEGORIAS = {
  // Categorias padrão Blockly (PT-BR)
  "Lógica": CORES_BLOCKLY.LOGICA,
  "Repetição": CORES_BLOCKLY.LOOPS,
  "Matemática": CORES_BLOCKLY.MATEMATICA,
  "Texto": CORES_BLOCKLY.TEXTO,
  "Listas": CORES_BLOCKLY.LISTAS,
  "Cor": CORES_BLOCKLY.COR,
  "Variáveis": CORES_BLOCKLY.VARIAVEIS,
  
  // Categorias padrão Blockly (EN)
  "Logic": CORES_BLOCKLY.LOGICA,
  "Loops": CORES_BLOCKLY.LOOPS,
  "Math": CORES_BLOCKLY.MATEMATICA,
  "Text": CORES_BLOCKLY.TEXTO,
  "Lists": CORES_BLOCKLY.LISTAS,
  "Colour": CORES_BLOCKLY.COR,
  "Variables": CORES_BLOCKLY.VARIAVEIS,
  
  // Categorias customizadas
  "Movimento": CORES_CUSTOMIZADAS.MOVIMENTO,
  "Sensores": CORES_CUSTOMIZADAS.SENSORES,
  "Tempo": CORES_CUSTOMIZADAS.TEMPO,
  "Multimídia": CORES_CUSTOMIZADAS.MIDIA,
  "Caneta": CORES_CUSTOMIZADAS.CANETA,
  "Controle": CORES_CUSTOMIZADAS.CONTROLE,
  "Condicionais": CORES_CUSTOMIZADAS.CONDICIONAL,
  "Entrada/Saída": CORES_BLOCKLY.VARIAVEIS,
};

/**
 * Retorna a cor padrão para uma categoria.
 * @param {string} nomeCategoria - Nome da categoria
 * @returns {number} Cor HSV
 */
export const obterCorCategoria = (nomeCategoria) => {
  return MAPA_CORES_CATEGORIAS[nomeCategoria] || CORES_BLOCKLY.LOGICA;
};

// Compatibilidade com exports antigos (deprecated)
/** @deprecated Use CORES_BLOCKLY.LOGICA */
export const COR_LOGICA = CORES_BLOCKLY.LOGICA;
/** @deprecated Use CORES_BLOCKLY.MATEMATICA */
export const COR_MATEMATICA = CORES_BLOCKLY.MATEMATICA;
/** @deprecated Use CORES_BLOCKLY.TEXTO */
export const COR_TEXTO = CORES_BLOCKLY.TEXTO;
/** @deprecated Use CORES_BLOCKLY.LOOPS */
export const COR_REPETICAO = CORES_BLOCKLY.LOOPS;
/** @deprecated Use CORES_BLOCKLY.VARIAVEIS */
export const COR_VARIAVEIS = CORES_BLOCKLY.VARIAVEIS;