11import { useEffect , useRef } from "react" ;
2- import Game from "./game" ;
3- import type { Result } from "./game" ;
2+ import type { Result } from "./game/game" ;
3+ import TutorialGame from "./tutorial/tutorialGames" ;
4+ import Game from "./game/game" ;
45
56export interface User {
67 name : string ;
@@ -26,6 +27,7 @@ type EmulatorProps = {
2627 executionId : number ; // エミュレーターそのものを更新するためのId
2728 handleStatuses : ( statuses : Status [ ] ) => void ;
2829 onGameCompleted ?: ( result : Result ) => void ;
30+ gameModeId : number ;
2931} ;
3032
3133export default function Emulator ( props : EmulatorProps ) {
@@ -38,19 +40,35 @@ export default function Emulator(props: EmulatorProps) {
3840 executionId,
3941 handleStatuses,
4042 onGameCompleted,
43+ gameModeId,
4144 } = props ;
4245 const canvasRef = useRef < HTMLCanvasElement > ( null ) ;
43- const gameRef = useRef < Game > ( ) ;
46+ const gameRef = useRef < any > ( ) ;
4447 useEffect ( ( ) => {
4548 if ( ! canvasRef . current ) throw new Error ( ) ;
46- const game = new Game ( users , canvasRef . current , ( newStatuses : Status [ ] ) => {
47- handleStatuses ( newStatuses ) ;
48- } ) ;
49+ let GameClass ;
50+ switch ( gameModeId ) {
51+ case 0 :
52+ GameClass = Game ;
53+ break ;
54+ case 1 :
55+ GameClass = TutorialGame ;
56+ break ;
57+ default :
58+ GameClass = Game ;
59+ }
60+ const game = new GameClass (
61+ users ,
62+ canvasRef . current ,
63+ ( newStatuses : Status [ ] ) => {
64+ handleStatuses ( newStatuses ) ;
65+ }
66+ ) ;
4967 gameRef . current = game ;
5068 return ( ) => {
5169 game . destroy ( ) ;
5270 } ;
53- } , [ users , executionId , handleStatuses ] ) ;
71+ } , [ users , executionId , handleStatuses , gameModeId ] ) ;
5472 useEffect ( ( ) => {
5573 if ( ! gameRef . current ) throw new Error ( ) ;
5674 gameRef . current . onCompleted = ( result : Result ) => {
0 commit comments