import { ApiHelpers } from "../../../../interpreters/ApiHelpers.js";

/**
 * Retorna a função de init do js-interpreter para o jogo Exemplo.
 * É aqui que a ponte entre o interpretador sandboxed e a cena Phaser é construída:
 * cada função registrada expõe um método da cena como uma chamada segura para o aluno.
 *
 * @param {ExemploScene} scene - Instância da cena Phaser ativa
 * @param {Object} config - Configurações opcionais (ex: animationSpeed)
 * @returns {Function} Função de init com assinatura (interpreter, globalScope)
 */
export const setupExemploAPI = (scene, config) => {
  const delay = (config && config.animationSpeed) || 200;

  return function (interpreter, globalScope) {
    // Ações assíncronas: createAsyncFunction aguarda o callback para avançar o interpreter
    ApiHelpers.registerFunction(
      interpreter,
      globalScope,
      "moverDireita",
      ApiHelpers.createActionWrapper(scene, "moverDireita", delay),
      true // isAsync
    );

    ApiHelpers.registerFunction(
      interpreter,
      globalScope,
      "moverBaixo",
      ApiHelpers.createActionWrapper(scene, "moverBaixo", delay),
      true // isAsync
    );

    // Necessário para o highlight visual dos blocos durante a execução
    ApiHelpers.registerFunction(
      interpreter,
      globalScope,
      "highlightBlock",
      ApiHelpers.createHighlightWrapper(scene),
      false
    );
  };
};
