/**
 * @fileoverview Utility module for layout.js
 * @module games.puzzle.ui.layout
 */

import { ConstantesJogo, ConstantesAssets } from "./constants.js";

/**
 * Mapeamento das strings usadas no config.js para as chaves de assets.
 */
const MAPA_BACKGROUNDS = {
  floresta: ConstantesAssets.CHAVES.BACKGROUND_1,
  fundo_rio: ConstantesAssets.CHAVES.BACKGROUND_2,
  flores: ConstantesAssets.CHAVES.BACKGROUND_3,
  lago: ConstantesAssets.CHAVES.BACKGROUND_4,
};

/**
 * Inicializa o layout base do jogo (Background)
 * @param {Phaser.Scene} scene - A cena do Phaser
 * @returns {Object} Objeto contendo referências visuais criadas no layout
 */
export function inicializarLayout(scene) {
  // Pega a configuração da fase atual que foi injetada no preBoot da cena
  const configFase = scene.registry.get("configFase") || {};
  
  // Lê a propriedade "background" do config da fase, ou usa o default
  const nomeBackground = configFase.background || "default";
  const chaveAsset = MAPA_BACKGROUNDS[nomeBackground] || MAPA_BACKGROUNDS.default;

  // Centro da tela (baseado nas constantes)
  const centroX = ConstantesJogo.LARGURA_TELA / 2;
  const centroY = ConstantesJogo.ALTURA_TELA / 2;

  // Adiciona a imagem de fundo centrada
  const bgImage = scene.add.image(centroX, centroY, chaveAsset);

  // Ajusta a escala da imagem para cobrir a tela inteira (caso a imagem seja menor ou maior que 800x600)
  // Usa o math.max para garantir que cubra tanto largura quanto altura (estilo "cover" do CSS)
  const scaleX = ConstantesJogo.LARGURA_TELA / bgImage.width;
  const scaleY = ConstantesJogo.ALTURA_TELA / bgImage.height;
  const scale = Math.max(scaleX, scaleY);
  bgImage.setScale(scale);

  // Retorna os elementos criados, para que a Cena principal possa manipulá-los se necessário
  return {
    background: bgImage,
    centroX: centroX,
    centroY: centroY
  };
}