|
1 | 1 | "use client" |
2 | 2 | import { useEffect, useRef } from "react"; |
3 | | -import "../utils/main" |
4 | 3 |
|
5 | 4 | const GameCanvas = ({state}) => { |
6 | 5 | const canvasRef = useRef<HTMLCanvasElement | null>(null); |
7 | | - |
| 6 | + |
8 | 7 | useEffect(() => { |
9 | | - const canvas = canvasRef.current; |
10 | | - if (!canvas) return; |
11 | | - |
12 | | - window.Game.init(state, canvas) |
13 | | - canvas.width = window.innerWidth |
14 | | - canvas.height = window.innerHeight |
15 | | - const ctx = canvas.getContext("2d"); |
16 | | - if (!ctx) return; |
17 | | - |
18 | | - let animationId: number; |
19 | | - |
20 | | - const draw = () => { |
| 8 | + // Importa main apenas no cliente |
| 9 | + import("../utils/main").then(() => { |
| 10 | + const canvas = canvasRef.current; |
| 11 | + if (!canvas) return; |
| 12 | + |
| 13 | + window.Game.init(state, canvas) |
21 | 14 | canvas.width = window.innerWidth |
22 | 15 | canvas.height = window.innerHeight |
23 | | - window.Game.update() |
24 | | - window.Game.draw(ctx, canvas) |
25 | | - animationId = requestAnimationFrame(draw); |
26 | | - }; |
| 16 | + const ctx = canvas.getContext("2d"); |
| 17 | + if (!ctx) return; |
27 | 18 |
|
| 19 | + let animationId: number; |
28 | 20 |
|
29 | | - draw(); |
| 21 | + const draw = () => { |
| 22 | + canvas.width = window.innerWidth |
| 23 | + canvas.height = window.innerHeight |
| 24 | + window.Game.update() |
| 25 | + window.Game.draw(ctx, canvas) |
| 26 | + animationId = requestAnimationFrame(draw); |
| 27 | + }; |
30 | 28 |
|
31 | | - return () => { |
32 | | - cancelAnimationFrame(animationId); |
33 | | - }; |
| 29 | + draw(); |
34 | 30 |
|
| 31 | + return () => { |
| 32 | + cancelAnimationFrame(animationId); |
| 33 | + }; |
| 34 | + }); |
35 | 35 | }, [state]); |
36 | 36 |
|
37 | 37 | return <canvas ref={canvasRef} style={{width: "100%"}}/>; |
|
0 commit comments