/**
 * @fileoverview Utility module for interpreterSetup.js
 * 
 * @module games.mole-mash.hooks.interpreterSetup
 */

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

/**
 * Inicializador do interpretador para o jogo MoleMash.
 * Registra funções assíncronas expostas ao código do aluno (moverToupeira, aguardar, highlightBlock).
 * @param {Object} sceneInstance - Instância da cena Phaser (MoleMashScene)
 * @param {Object} [options={}] - Opções adicionais (não utilizadas atualmente)
 * @returns {function(interpreter:Object, globalObject:Object):void} Inicializador do interpretador
 */
export const setupMoleMashAPI = (sceneInstance, options = {}) => {
  return (interpreter, globalObject) => {
    const highlightWrapper = function (id, callback) {
      sceneInstance.highlightBlock(id).then(callback);
    };

    const moverToupeiraWrapper = function (linha, coluna, callback) {
      sceneInstance.moverToupeira(linha, coluna);
      setTimeout(callback, 800);
    };

    const aguardarWrapper = function (ms, callback) {
      setTimeout(callback, ms);
    };

    ApiHelpers.registerMultipleFunctions(interpreter, globalObject, [
      { name: "highlightBlock", wrapper: highlightWrapper, isAsync: true },
      { name: "moverToupeira", wrapper: moverToupeiraWrapper, isAsync: true },
      { name: "aguardar", wrapper: aguardarWrapper, isAsync: true },
    ]);
  };
};
