Olá, estou criando um jogo da cobrinha em react e gostaria de executar as ações por meio de uma classes armazenada em um atom do recoil, EX: game_controller.ts:
export const state_game_controller = atom<GameController | undefined>({
"key": "GameController",
"default": undefined
})
export const useChangeSnakeDirection = () => {
const game_controller = useRecoilValue(state_game_controller)
return (dir:TDirections) => {
game_controller?.changeSnakeDirection(dir)
}
}
export const useStartGame = () => {
const game_controller = useRecoilValue(state_game_controller)
return () => {
game_controller?.startGame()
}
}
app.tsx:
export const App = () => {
const startGame = useStartGame();
return (
<>
<Board />
<button onClick={() => startGame()}>Inicar jogo</button>
<Control />
</>
);
};
Entretanto, quando inicio o jogo no botão inicar do app.tsx, recebo o seguinte erro:
Cannot assign to read only property 'positions' of object '#<Snake>'
Alguem sabe o que pode ser?
os atributos da classe game_controller estão assim:
private canvas: HTMLCanvasElement;
private gameboard: GameBoard
private snake: Snake
private apple: Apple
private canvas_drawer: CanvasDrawer
private loop: Loop
private score: number
Imagino que possa tel algo a ver mas não tenho certeza