43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
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
|
|
);
|
|
};
|
|
};
|