/**
* @fileoverview React component for AutomatoGame.jsx
*
* @module games.automato.AutomatoGame
*/
import React, { useEffect, useMemo } from "react";
import PropTypes from "prop-types";
import GameBase from "../../../components/game/GameBase";
import GameEditor from "../../../components/game/GameEditor";
import BlocklyEditor from "../../../components/game/editors/BlocklyEditor";
import { createGame } from "./game";
import { gameConfig } from "./config/config";
import { registerBlocks, generateDynamicToolbox } from "./blocks/blocks";
import {
GameStateProvider,
useGameState,
} from "../../../contexts/GameStateContext";
import { useAutomatoTour } from "./hooks/useAutomatoTour";
import { debugSolutions } from "./config/debugSolutions";
import "shepherd.js/dist/css/shepherd.css";
import "../../../styles/shepherd-theme.css";
function AutomatoGameContent() {
const { isDebugMode, setFailureMessage } = useGameState();
const { startTour } = useAutomatoTour();
useEffect(() => {
registerBlocks();
}, []);
const toolboxGenerator = useMemo(() => {
return (allowedBlocks) => generateDynamicToolbox(allowedBlocks);
}, []);
const renderEditor = () => {
return (
);
};
return (
{renderEditor()}
);
}
/**
* Conteúdo principal do jogo Automato.
* Configura toolbox, registra blocos e injeta o `gameFactory` no `GameBase`.
* @returns {JSX.Element} Conteúdo do editor e canvas do Automato
*/
export default function AutomatoGame() {
return (
);
}
/**
* Componente de página que provê o contexto para o jogo Automato
* e monta `AutomatoGameContent` dentro do `GameStateProvider`.
* @returns {JSX.Element}
*/
AutomatoGameContent.propTypes = {};
AutomatoGame.propTypes = {};